ImportError: нет модуля с именем Cython.Distutils

у меня странная проблема при попытке установить библиотеку Python zenlib, используя . Когда я запускаю setup.py файл, я получаю ошибку импорта, говоря

ImportError: нет модуля с именем Cython.Distutils`

но у меня есть такой модуль, и я могу импортировать его в командную строку python без каких-либо проблем. Почему я могу получить эту ошибку импорта?

Я думаю, что проблема может быть связана с факт, что я использую Восторженное Распространение Python, который я установил прямо перед этим, а не с помощью Python 2.7, который поставляется с Ubuntu 12.04.

больше фона: Вот именно то, что я получаю, когда пытаюсь запустить 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

I убедитесь, что восторженный дистрибутив Python, а не python, который поставляется с Ubuntu, запускается по умолчанию, добавляя переменную среды bash $PATH путем редактирования ~/.bashrc, добавив это в качестве последней строки:

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) на Cython, Distutils, build_ext.py и __init__.py файлы. Наверное, глупо пытаться, и это ничего не менять.

не могу придумать, что предпринять!? Есть идеи?

9 ответов


ваш 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

Установить Cython:

pip install cython

Run

which python

это путь к python, который ваша система тоже по умолчанию затем перейдите к методу @tiago:

sudo <output of which python> setup.py install


У меня есть только один совет для вас : создайте virtualenv. Это гарантирует, что у вас есть только одна версия python и все ваши пакеты, установленные локально (а не на всей вашей системе).
Должно быть одним из решений.


для python3 используйте

sudo apt-get install cython3

для python2 используйте

sudo apt-get install cython

детали можно прочитать на этой


в CLI-python импортируйте sys и посмотрите, что внутри sys.путь
Тогда попробуйте использовать export PYTHONPATH=whatyougot


это легко.

можно попробовать первый.

он обновит ваш easy_install встроенный python.


выполнение следующих команд разрешило проблему для меня в 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


просто установите Cython из http://cython.org/#download и установите его с помощью этой команды

sudo python setup.py install

выполните команду

sudo python -c 'import Cython.Distutils'

и он будет установлен и сообщение об ошибке исчезнет.