首页 文章

ImportError:没有名为Cython.Distutils的模块

提问于
浏览
50

我在尝试使用 setup.py 文件安装Python库 zenlib 时遇到了一个奇怪的问题 . 当我运行 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 )并将完全权限(r,w,x)赋予 CythonDistutilsbuild_ext.py__init__.py 文件 . 尝试可能很傻,但它什么都没改变 .

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

10 回答

  • 8

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

  • 0

    这很容易 .

    你可以先试试 install cython 包 .

    它会升级你内置的python中的 easy_install .

  • -1

    只需从http://cython.org/#download安装Cython并使用此命令安装它

    sudo python setup.py install
    

    然后运行该命令

    sudo python -c 'import Cython.Distutils'
    

    它将被安装,错误消息将消失 .

  • 0

    在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

  • 66

    在现代再次进入这个 . 解决方案很简单:

    pip uninstall cython && pip install cython
    
  • 17

    你的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
    
  • 6

    安装Cython:

    pip install cython
    
  • 0

    哪个python

    这是你的系统默认的python的路径然后转到@ tiago的方法:

    sudo <输出python> setup.py安装

  • 1

    用于python3使用

    sudo apt-get install cython3
    

    用于python2使用

    sudo apt-get install cython
    

    详情请浏览this

  • 5

    我只给你一个建议:创建一个virtualenv . 这将确保您只有一个版本的python和本地安装的所有软件包(而不是整个系统) .
    应该是解决方案之一 .

相关问题