导入错误:找不到名为Cython.Distutils的模块。

62

在尝试安装Python库zenlib时,我遇到了一个奇怪的问题,使用它的setup.py文件。当我运行setup.py文件时,我收到一个导入错误,提示:

ImportError: No module named 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

我通过编辑~/.bashrc,在最后一行添加以下内容,将我的bash $PATH环境变量前置,以确保默认情况下运行的是Enthought Python Distribution而不是Ubuntu自带的Python:

export PATH=/usr/local/epd/bin:$PATH

实际上,which python 命令会输出 /usr/local/epd/bin/python... 由于不知道该怎么办,我进入了我的site packages目录 (/usr/local/epd/lib/python2.7/site-packages),并给 CythonDistutilsbuild_ext.py以及 __init__.py文件分别赋予了完全权限(r,w,x)。也许这样做有点儿蠢,但它没有改变任何东西。

下一步应该试什么呢?有什么想法吗?


我想不出什么,但你的 sys.path 里有什么? - Lev Levitsky
2
sudo python -c 'import Cython.Distutils' 可以正常工作吗? - jfs
我的实验得出了相同的结果,我在Ubuntu 12-04上安装了Python 2.7、Cython、NumPy和SciPy。出现了相同的错误跟踪(Traceback):最近的调用在“setup.py”文件的第4行,从Cython.Distutils导入build_ext。导入错误:没有名为Cython.Distutils的模块。似乎没有一个答案能够解决这个问题。亲爱的专家们,请帮帮忙! - pythOnometrist
5
对于通过 Google 找到这篇文章的人:sudo apt-get install python-dev; sudo pip install cython,它的意思是安装 Python 开发包并使用 pip 安装 Cython。 - Martin Thoma
12个回答

0

这很容易。

你可以先尝试安装cython包。

它会升级你内置的Python中的easy_install


-1

只需从http://cython.org/#download安装Cython,并使用以下命令进行安装

sudo python setup.py install

然后运行命令

sudo python -c 'import Cython.Distutils'

然后它将被安装,错误信息将消失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接