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