如何打包python模块所依赖的共享对象?

时间:2013-07-05 08:48:03

标签: c++ python boost-python

我有一个用C ++实现的python包,我使用setuptools进行分发。我的C ++代码依赖于一些共享对象,特别是boost.python库。我应该如何分发这些共享对象?目前我要求软件包用户单独安装boost C ++库,但我宁愿将所有内容捆绑在一个setuptools发行版中,以使他/她更容易。目前,除了安装我的软件包之外,他们还必须设置boost库及其LD_LIBRARY_PATH环境变量。

1 个答案:

答案 0 :(得分:0)

声明依赖项

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-dependencies

  

PiPy的缺点:

     
      
  1. 安装项目后,使用EasyInstall,   setup.py install或setup.py开发,所有依赖项都没有   已经安装的将被定位(通过PyPI),下载,构建(如果   必要的),并安装。
  2.   
  3. 项目中的任何脚本都将是   安装了验证可用性的包装器   在运行时指定依赖项,并确保正确   版本被添加到sys.path(例如,如果有多个版本   安装)。
  4.   
  5. Python Egg发行版将包含元数据文件   列出依赖项
  6.         

    不在PyPI中的依赖关系

         

    如果您的项目依赖于未在PyPI中注册的软件包,   只要它们可用,你仍然可以依赖它们   下载为:

         
        
    • 一个鸡蛋,采用标准的distutils sdist格式,
    •   
    • 单个.py文件,
    •   
    • 或VCS存储库(Subversion,Mercurial或Git)。您只需要在dependency()的dependency_links参数中添加一些URL。
    •   
相关问题