Customize location of .so file generated by Cython

倾然丶 夕夏残阳落幕 提交于 2019-12-03 11:56:27

问题


I have a Cython package with wrappers of a C library. This is the tree structure of the package

package/
       _api.pxd
       _wrap.pyx
       setup.py
       wrapper/
              __init__.py
              wrap.py

Doing

python setup.py build_ext --inplace

puts the _wrap.so file in the top-level package/ directory which is normally required in most cases. However, my wrap.py needs the _wrap.so in the package/wrapper/ directory. I was wondering if there's a way in which setup.py could create the .so file in the desired place by itself without manually copying and pasting it in the location.


回答1:


The output folder for the produced .so files can be specified as the first argument of setuptools.Extension function.

Here is an example for Cython extensions,

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


来源:https://stackoverflow.com/questions/31043774/customize-location-of-so-file-generated-by-cython

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!