[英]ImportError: No module named Cython.Distutils
我在尝试使用setup.py
文件安装 Python 库zenlib
时遇到了一个奇怪的问题。 当我运行setup.py
文件时,出现导入错误,说
导入错误:没有名为 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
我通过编辑~/.bashrc
将我的 bash $PATH 环境变量添加到最后一行,以确保默认情况下运行的是 Enthought Python Distribution 而不是 Ubuntu 附带的 python:
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)。 尝试可能很愚蠢,但它什么也没改变。
想不出接下来要尝试什么!? 有任何想法吗?
安装 Cython:
pip install cython
你的 sudo 没有得到正确的 python。 这是 sudo 在 Ubuntu 中的已知行为。 有关更多信息,请参阅此问题。 您需要确保 sudo 调用正确的 python,或者使用完整路径:
sudo /usr/local/epd/bin/python setup.py install
或通过执行以下操作(在 bash 中):
alias sudo='sudo env PATH=$PATH'
sudo python setup.py install
跑步
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
这个链接对我有帮助: https : //github.com/trezor/python-trezor/issues/40
在现代再次遇到这个问题。 解决方法很简单:
pip uninstall cython && pip install cython
那很容易。
您可以先尝试install cython
包。
它将升级您的easy_install内置python。
我在 Cython 上依赖于第三方库,由于 ImportError 无法在 Travis 上构建项目。 如果有人需要它 - 在安装 requirements.txt 之前运行以下命令:
pip install Cython --install-option="--no-cython-compile"
安装 GCC 也可能有帮助。
读一千个这样的线程,最后得到它用于 Python 3。(如果你有那种安装,用 pip3 替换 pip,如果你在运行任何这些之前尝试过其他解决方案,请运行pip uninstall cython
)
苹果:
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
只需从http://cython.org/#download安装 Cython 并使用此命令安装它
sudo python setup.py install
然后运行命令
sudo python -c 'import Cython.Distutils'
它将被安装并且错误消息将消失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.