python的ImportError:Cython.Distutils

我在尝试使用setup.py文件安装python库时遇到了一个奇怪的问题。 当我运行setup.py文件,我得到一个导入错误,说ImportError: No module named Cython.Distutils ,但我有这样一个模块,我可以导入它没有任何麻烦的python命令行。 为什么我会得到这个导入错误?

我环顾了几十个导入错误的案例,阅读了关于导入和包等,但似乎无法弄清楚。 我现在正在这一天被困在这一天的两天半,所以我想现在是时候请求帮忙了!

图书馆被称为zenlib。 我认为这个问题可能与我正在使用Enthought Python Distribution的事实有关,而不是使用Ubuntu 12.04附带的Python2.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环境variables,并将其添加为最后一行:

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

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

想不到接下来要尝试什么! 有任何想法吗?

你的sudo没有得到正确的python。 这是Ubuntu中sudo的已知行为。 看到这个问题的更多信息。 你需要确保sudo调用正确的python,或者使用完整的path:

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

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

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

安装Cython:

 pip install cython 

which python

这就是你的系统默认的pythonpath,然后去@ tiago的方法:

sudo <output of which python> setup.py install

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

对于python3使用

 sudo apt-get install cython3 

对于python2使用

 sudo apt-get install cython 

详情可以在这里阅读

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

这很容易。

你可以尝试先install cython包。

它会升级你的easy_install在python内置。

只需从http://cython.org/#download安装Cython,然后使用此命令进行安装即可;

 sudo python setup.py install 

然后运行该命令

 sudo python -c 'import Cython.Distutils' 

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

Interesting Posts