如何打包python模块所依赖的共享对象
How to package shared objects that python modules depend on?
我有一个用C++实现的python包,我正在使用setuptools分发它。我的C++代码依赖于一些共享对象,特别是boost.python库。我应该如何分发这些共享对象?目前,我要求软件包用户单独安装boost C++库,但我宁愿将所有内容捆绑在一个setuptools发行版中,让他/她更轻松。目前,除了安装我的包外,他们还必须设置boost库和LD_LIBRARY_PATH
环境变量。
声明依赖项
setup.py
中有一个名为install_requires = [""]
的选项:例如:
setup(
name='django-cherrypy',
version='0.1',
packages=packages,
license='LICENSE',
description='cherrypy, running under django',
long_description=open('README.md').read(),
author='Calvin Cheng',
author_email='calvin@calvinx.com',
install_requires=['cherrypy-wsgiserver'],
extra_requires=['newrelic'],
url='https://github.com/od-eon/django-cherrypy',
)
此安装程序要求chrerryPy WSGI服务器库。
捆绑所有内容
一切都在这里解释:http://pythonhosted.org/distribute/setuptools.html#declaring-依赖
PiPy:
- 当您的项目被安装时,通过使用EasyInstall,setup.py install或setup.py develop,所有依赖项都不是将定位(通过PyPI)、下载、构建(如果必要的),并安装
- 项目中的任何脚本都将安装有包装器,用于验证指定的依赖项,并确保版本被添加到sys.path(例如,如果已经添加了多个版本已安装)
- Python Egg发行版将包含一个元数据文件列出依赖项
PyPI 中没有的依赖项
如果您的项目依赖于未在PyPI中注册的包,只要它们可用,你仍然可以依赖它们下载为:
- 一个标准distutils-sdist格式的鸡蛋
- 单个.py文件
- 或VCS存储库(Subversion、Mercurial或Git)。您只需要在setup()的dependency_links参数中添加一些URL
相关文章:
- 处理影响跨不同线程共享对象的定时回调的最佳方法是什么?
- 如何创建一个共享对象与另一个.所以在Cmake
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 在 Android Studio 中使用 C++ 共享对象时出现问题
- 共享对象、符号、C/C++ 库链接和加载
- ./main:加载共享库时出错:libopencv_highgui.so.4.0:无法打开共享对象文件:没有这样的文件或
- 在 win32 上生成 R 包:无法加载共享对象 (.dll)
- 共享对象中的符号
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- C++ 为什么要级联共享对象链接
- 加载共享库时出错:libbsoncxx.so._noabi:无法打开共享对象文件:没有此类文件或目录
- 从单个.cpp构建共享对象
- 与 32 位共享对象的链接问题
- 卸载共享对象(.so 文件)在 C++ 中用 dlopen() 打开
- 运行程序时找不到共享对象库,但在编译过程中链接了它
- 错误:无法打开共享对象文件:没有此类文件或目录
- Qt 创建器:将库移动到 subdir 后无法打开共享对象文件
- 共享对象中的符号名称与文件中.cpp函数不同
- C++:在共享对象中调用抽象基类构造函数/未定义的符号
- Cython:共享对象中未定义的符号