ImportError: No module named Cython.Distutils
我在尝试使用其
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 |
我通过编辑
1 | export PATH=/usr/local/epd/bin:$PATH |
实际上,以东十一〔四〕吐出了以东十一〔五〕…我不知道还可以尝试什么,于是进入了我的站点包目录(
想不出下一步该怎么做!有什么想法吗?
安装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
对于Python 3的使用
1 | sudo apt-get install cython3 |
对于Python 2的使用
1 | sudo apt-get install cython |
详情请参阅
我只有一个建议:创建一个virtualenv。这将确保您只有一个版本的python,并且所有的包都安装在本地(而不是整个系统上)。应该是解决方案之一。
在clipython中,导入sys并查看sys.path中的内容然后尝试使用
在现代又遇到了这个问题。解决方案很简单:
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
这很容易。
你可以先试试
它将升级您的易于安装的内置python。
只需安装Cythonhttp://cython.org/下载并使用此命令安装它
1 | sudo python setup.py install |
然后运行命令
1 | sudo python -c 'import Cython.Distutils' |
它将被安装,错误信息将消失。