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.
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