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

时间:2012-06-19 19:59:53

标签: python importerror enthought

我在尝试使用其zenlib文件安装Python库setup.py时遇到了一个奇怪的问题。当我运行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是默认运行的,通过编辑~/.bashrc来增加我的bash $ PATH环境变量,将其添加为最后一行:

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

确实which python吐出/usr/local/epd/bin/python ...不知道还有什么要尝试,我进入了我的网站包目录,(/usr/local/epd/lib/python2.7/site-packages)并给予完全权限(r,w) ,x)到CythonDistutilsbuild_ext.py__init__.py个文件。尝试可能很傻,但它什么都没改变。

想不出接下来会尝试什么!?有什么想法吗?

11 个答案:

答案 0 :(得分:67)

安装Cython:

pip install cython

答案 1 :(得分:18)

你的sudo没有得到正确的python。这是Ubuntu中sudo的已知行为。有关详细信息,请参阅此question。您需要确保sudo通过使用完整路径调用正确的python:

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

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

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

答案 2 :(得分:8)

运行

  

which python

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

  

sudo <output of which python> setup.py install

答案 3 :(得分:6)

对于python3使用

sudo apt-get install cython3

对于python2使用

sudo apt-get install cython

详细信息可以在this

上阅读

答案 4 :(得分:5)

我只给你一个建议:创建一个virtualenv。这将确保您只有一个版本的python和本地安装的所有软件包(而不是整个系统) 应该是解决方案之一。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

在近代再次涉足这一领域。解决方案很简单:

pip uninstall cython && pip install cython

答案 7 :(得分:0)

这很容易。

您可以先试用install cython个包裹。

它将升级你在python中构建的 easy_install

答案 8 :(得分:0)

在ubuntu 14.04中运行以下命令解决了我的问题:

rsync

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

答案 9 :(得分:0)

阅读其中一千个线程,最后将其用于Python3。(如果您具有这种安装方式,请用pip3替换pip,如果在运行任何这些线程之前尝试了其他解决方案,请运行pip uninstall cython)。

Mac:

brew install cython
pip install --upgrade cython

Ubuntu

sudo apt-get install cython3 python-dev  
pip install --upgrade cython

Windows(必须具有conda,并且MinGW已在路径中)

conda install cython
conda install --upgrade cython

答案 10 :(得分:-1)

从中安装Cython http://cython.org/#download 并使用此命令安装它

sudo python setup.py install

然后运行命令

sudo python -c 'import Cython.Distutils'

它将被安装并且错误消息将消失。