使用distutils安装扩展模块、纯Python模块和共享库的混合体
我正在使用cython来构建一个扩展模块。这个模块依赖于一个外部的共享库,这个库在模块构建时会被找到。此外,我在同一个目录下还有一些纯Python模块。
有没有人能给我一个这个任务的setup.py示例?我在使用“python setup.py install”命令时,遇到了一些问题,无法把扩展模块、纯Python模块和共享库放在同一个目录里。
1 个回答
1
我找到了解决办法:我有一个叫 ABC 的文件夹,里面放着我的包,结构如下:
ABC/
__init__.py
A.py
B.pyx
C.so (or C.dll and C.lib on win)
然后下面这个 setup.py 文件就能完成任务:
#input-encoding: utf-8
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
name = "ABC",
packages = ["ABC"],
package_dir = { "ABC" : "." },
ext_package = "ABC",
cmdclass = {'build_ext': build_ext},
package_data = { ".": [ "C.dll"] },
ext_modules = [ Extension("B", sources="B.pyx", libraries="C" ) ]
)
我需要把 setup.py 放在 ABC/ 文件夹里,并通过 package_dir = { "ABC" : "." },
来进行指向。