【发布时间】:2014-09-15 09:02:03
【问题描述】:
我有一个需要 Cython 来构建其扩展的包,我正在尝试调整 setup.py 文件以简化安装。
一个简单的
pip install git+git://<pkg-repo>
抛出错误
$ pip install git+https://<pkg-repo>
Downloading/unpacking git+https://<pkg-repo>
Cloning https://<pkg-repo> to /tmp/pip-nFKHOM-build
Running setup.py (path:/tmp/pip-nFKHOM-build/setup.py) egg_info for package from git+https://<pkg-repo>
Traceback (most recent call last):
File "<string>", line 17, in <module>
File "/tmp/pip-nFKHOM-build/setup.py", line 2, in <module>
from Cython.Build import cythonize
ImportError: No module named Cython.Build
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 17, in <module>
File "/tmp/pip-nFKHOM-build/setup.py", line 2, in <module>
from Cython.Build import cythonize
ImportError: No module named Cython.Build
因为安装 Cython 依赖项之前的 Cython 导入。这导致了一个多阶段的安装过程:
pip install <deps> cython
pip install git+git://<pkg-repo>
这很糟糕。 setup.py的相关部分是:
from setuptools import setup, find_packages
from Cython.Build import cythonize
setup(
install_requires=[
...
'cython>=0.19.1'
...
],
ext_modules=cythonize([
...
"pkg/io/const.pyx",
...
])
)
如何更改 setup.py 以仍然对 ext_modules 进行 cythonize,同时依靠 install_requires 首先获得 Cython?
【问题讨论】: