我在尝试使用其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
)并给Cython
,Distutils
,build_ext.py
和__init__.py
文件提供完全权限(r,w,x)。尝试可能很傻,但它什么都没改变。
想不出接下来会尝试什么!?有任何想法吗?
你的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
只需从http://cython.org/#download安装Cython并使用此命令安装它
sudo python setup.py install
然后运行该命令
sudo python -c 'import Cython.Distutils'
它将被安装,错误消息将消失。
安装Cython:
pip install cython
跑
which python
这是你的系统默认的python的路径然后转到@ tiago的方法:
sudo <output of which python> setup.py install
我只给你一个建议:创建一个virtualenv。这将确保您只有一个版本的python和本地安装的所有软件包(而不是整个系统)。 应该是解决方案之一。
在CLI-python中,导入sys并查看sys.path中的内容
然后尝试使用export PYTHONPATH=whatyougot
在ubuntu 14.04中运行以下命令解决了我的问题:
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
在现代再次进入这个。解决方案很简单:
pip uninstall cython && pip install cython
这很容易。
你可以先试试install cython
包。
它将升级你在python中内置的easy_install。