我在尝试zenlib
使用其setup.py
文件安装 Python 库时遇到了一个奇怪的问题。当我运行setup.py
文件时,我收到一个导入错误,说
ImportError:没有名为 Cython.Distutils 的模块
但我确实有这样的模块,我可以在 python 命令行上导入它而没有任何麻烦。为什么我会收到此导入错误?
我认为问题可能与我使用的是预先安装的Enthought Python Distribution而不是使用 Ubuntu 12.04 附带的 Python 2.7 的事实有关。
更多背景:这正是我在尝试运行 setup.py 时得到的:
enwe101@enwe101-PCL:~/zenlib/src$ sudo python setup.py install
Traceback (most recent call last):
File "setup.py", line 4, in <module>
from Cython.Distutils import build_ext
ImportError: No module named Cython.Distutils
但它可以从命令行工作:
>>> from Cython.Distutils import build_ext
>>>
>>> from fake.package import noexist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named fake.package
请注意,第一个导入有效,第二个引发错误。将此与 setup.py 的前几行进行比较:
#from distutils.core import setup
from setuptools import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import os.path
我确保 Enthought Python Distribution 而不是 Ubuntu 附带的 python 是默认运行的,方法是在我的 bash $PATH 环境变量之前添加 editor ~/.bashrc
,并将其添加为最后一行:
export PATH=/usr/local/epd/bin:$PATH
确实which python
吐出来了/usr/local/epd/bin/python
......不知道还能尝试什么,我进入了我的站点包目录 ( /usr/local/epd/lib/python2.7/site-packages
) 并授予对Cython
、Distutils
、build_ext.py
和__init__.py
文件的完全权限 (r、w、x)。尝试可能很愚蠢,但它没有任何改变。
想不出接下来要尝试什么!?有任何想法吗?