使用python包安装链接的C库

时间:2016-11-30 00:32:37

标签: python distutils python-c-extension

我有一个构建C库_a的项目,它具有a.py中使用的python绑定。在构建过程中,_a链接到libdepend,这也是使用我的构建系统构建的。

我有一个使用distutils的setup.py文件构建Extension并使用setup

from distutils.core import setup, Extension
# Set up extension
extension = Extension('_a',
                      ['a.c'],
                      # Where the built library  is
                      library_dirs=[library_build_dir],
                      libraries=['libdepend']
                      )

# Set up python module
setup(name='a',
      ext_modules=[extension],
      py_modules=['a']
      )

当我运行python setup.py install时,_a被复制到我的site-packages文件夹,但我似乎无法复制libdepend。如果我尝试导入a,我会

import a
# >>> ImportError: libdepend.so: cannot open shared object file: No such file or directory

有没有办法将libdepend复制到带有distutils的site-packages文件夹?我想这样做,因为我的构建系统也在构建libdepend。我知道我可以在全局安装libdepend,但我希望能够将它安装到用户的virtualenv网站包中。

在我的具体情况中,我使用CMake作为构建系统,而a.c实际上是SWIG生成的绑定。我正在尝试找到一种至少适用于Linux和OS X / Mac OS的解决方案,但最好也适用于Windows。

0 个答案:

没有答案