问题
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