用python包安装链接的C库

2024-10-04 11:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有一个setup.py文件,它使用distutils构建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

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

在我的具体例子中,我使用CMake作为构建系统,a.c实际上是SWIG生成的绑定。我正在尝试找到一个解决方案,它至少可以在Linux和osx/macos上工作,但最好也能在Windows上工作。你知道吗


Tags: pyimport文件夹modulespackages系统setupextension