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

Him*_*hra 13 python wrapper cython

我有一个包含C库包装的Cython包.这是包的树结构

package/
       _api.pxd
       _wrap.pyx
       setup.py
       wrapper/
              __init__.py
              wrap.py
Run Code Online (Sandbox Code Playgroud)

python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)

_wrap.so文件放在顶级package/目录中,这在大多数情况下通常是必需的.但是,我wrap.py需要_wrap.sopackage/wrapper/目录中.我想知道是否有一种方法setup.py可以.so在所需的位置创建文件,而无需手动复制并粘贴到该位置.

rth*_*rth 13

.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,
     )
Run Code Online (Sandbox Code Playgroud)