繁体   English   中英

导入错误:没有名为 Cython.Distutils 的模块

[英]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 ) 并授予CythonDistutilsbuild_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

对于python3使用

sudo apt-get install cython3

对于python2使用

sudo apt-get 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

这个链接对我有帮助: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM