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
),并给予Cython
, Distutils
, build_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'
它将被安装并且错误信息将消失。