【发布时间】:2015-08-06 03:21:52
【问题描述】:
我正在开发一个 Python 包,EcoPy,它主要是用纯 Python 编写的。主文件夹称为 ecopy。有一个名为回归的子文件夹,其中包含一个已经构建的 Cython 文件。主 setup.py 文件包含代码:
ext_modules = cythonize([
Extension(
'ecopy.regression.isoFunc', ['ecopy/regression/isoFunc.pyx'], **opts),
])
当我跑步时
sudo pip install ecopy -e . --upgrade --force-reinstall
模块构建良好。如果我删除了 isoFunc.c 文件,它甚至会重新编译它。问题是 Cython 不会将 .c 文件转换为 .so 文件,我需要它来导入函数。如果我尝试在没有它的情况下加载模块,我会得到
ImportError: No module named isoFunc
如果我使用命令行手动设置文件
python setup.py build_ext --inplace
Cython 会生成 .so 文件。如何让它使用 pip 生成 .so 文件?我试图通过阅读他们的代码来弄清楚 statsmodels 是如何做到的,但老实说,这对我来说是个谜。
就好像 pip 命令遗漏了 build_ext 参数一样。
【问题讨论】: