自定义Cython生成的.so文件的位置

时间:2015-06-25 07:21:57

标签: python wrapper cython

我有一个包含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文件,而无需手动复制并粘贴到该位置。

1 个答案:

答案 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,
     )