我有一个构建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。