关于python:ImportError:没有名为Cython.Distutils的模块

ImportError: No module named Cython.Distutils

我在尝试使用其setup.py文件安装python库zenlib时遇到了一个奇怪的问题。当我运行setup.py文件时,我得到一个导入错误,说

ImportError: No module named Cython.Distutils`

但是我确实有这样一个模块,我可以在python命令行中导入它,而不会有任何麻烦。为什么我会收到这个导入错误?

我认为问题可能与我使用的是我事先就安装的热情的python发行版有关,而不是使用Ubuntu12.04附带的python 2.7。

更多背景:以下是我在尝试运行setup.py时得到的信息:

1
2
3
4
5
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

但它在命令行中工作:

1
2
3
4
5
6
>>> 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的前几行进行比较:

1
2
3
4
5
#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环境变量前面加上最后一行,确保默认情况下运行的是热情的python发行版,而不是Ubuntu附带的python:

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

实际上,以东十一〔四〕吐出了以东十一〔五〕…我不知道还可以尝试什么,于是进入了我的站点包目录(/usr/local/epd/lib/python2.7/site-packages,并授予CythonDistutilsbuild_ext.py__init__.py文件完全的权限(r、w、x)。可能是愚蠢的尝试,它改变不了什么。

想不出下一步该怎么做!有什么想法吗?


安装Cython:

1
pip install cython


你的sudo没有找到合适的Python。这是一个已知的行为sudo在乌班图。有关详细信息,请参阅此问题。您需要确保sudo使用完整路径调用正确的python:

1
sudo /usr/local/epd/bin/python setup.py install

或者通过执行以下操作(在bash中):

1
2
alias sudo='sudo env PATH=$PATH'
sudo python setup.py install


which python

这也是系统默认的python路径。然后转到@tiago的方法:

sudo setup.py install


对于Python 3的使用

1
sudo apt-get install cython3

对于Python 2的使用

1
sudo apt-get install cython

详情请参阅


我只有一个建议:创建一个virtualenv。这将确保您只有一个版本的python,并且所有的包都安装在本地(而不是整个系统上)。应该是解决方案之一。


在clipython中,导入sys并查看sys.path中的内容然后尝试使用export PYTHONPATH=whatyougot


在现代又遇到了这个问题。解决方案很简单:

1
pip uninstall cython && pip install cython

运行以下命令解决了Ubuntu 14.04中的问题:

1
2
3
4
sudo apt-get install python-dev    
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libsystemd-daemon-dev
sudo pip install cython

这个链接帮助了我:https://github.com/trezor/python-trezor/issues/40


这很容易。

你可以先试试install cython包。

它将升级您的易于安装的内置python。


只需安装Cythonhttp://cython.org/下载并使用此命令安装它

1
sudo python setup.py install

然后运行命令

1
sudo python -c 'import Cython.Distutils'

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