我有一个包含C库包装的Cython包。这是包的树结构
package/
_api.pxd
_wrap.pyx
setup.py
wrapper/
__init__.py
wrap.py
否则
python setup.py build_ext --inplace
将_wrap.so
文件放在顶级package/
目录中,这在大多数情况下通常是必需的。但是,我的wrap.py
需要_wrap.so
目录中的package/wrapper/
。我想知道setup.py
是否有办法在所需的位置创建.so
文件,而无需手动复制并粘贴到该位置。
答案 0 :(得分:10)
可以将生成的.so
文件的输出文件夹指定为setuptools.Extension
函数的第一个参数。
以下是Cython扩展的示例
from setuptools import setup, find_packages, Extension
from Cython.Distutils import build_ext
ext_modules=[
Extension("package.wrapper.wrap", # location of the resulting .so
["package/wrapper/wrap.pyx"],) ]
setup(name='package',
packages=find_packages(),
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules,
)