ImportError: нет модуля с именем Cython.Distutils
У меня странная проблема при попытке установить библиотеку Python zenlib
, используя его setup.py
файл. Когда я бегу setup.py
файл, я получаю ошибку импорта, говоря
ImportError: Нет модуля с именем Cython.Distutils`
но у меня есть такой модуль, и я могу импортировать его в командной строке Python без каких-либо проблем. Почему я могу получить эту ошибку импорта?
Я думаю, что проблема может быть связана с тем, что я использую Enthought Python Distribution, который я установил прямо перед этим, вместо того, чтобы использовать 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
Я убедился, что дистрибутив Python Enthought, а не 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 не получает правильный питон. Это известное поведение sudo в Ubuntu. Смотрите этот вопрос для получения дополнительной информации. Вы должны убедиться, что sudo вызывает правильный питон, либо используя полный путь:
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
То есть путь к питону, который по умолчанию установлена в вашей системе, затем перейдите к методу @tiago:
sudo <output of which python> setup.py install
У меня есть только один совет для вас: создайте virtualenv. Это гарантирует, что у вас есть только одна версия python и все ваши пакеты установлены локально (а не во всей вашей системе).
Должно быть одним из решений.
Столкнулся с этим снова в наше время. Решение было простым:
pip uninstall cython && pip install cython
Прочитал тысячу этих потоков и, наконец, получил его для Python 3. (замените pip на pip3, если у вас такая установка, и запустите pip uninstall cython
если вы пробовали другие решения перед запуском любого из них)
Mac:
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
В 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
Это просто.
Вы могли бы попробовать install cython
Пакет первый.
Он обновит ваш easy_install, встроенный в python.
У меня была зависимость от сторонней библиотеки на Cython, мне не удалось собрать проект на Travis из-за ошибки ImportError. Если кому-то это нужно - перед установкой requirements.txt выполните эту команду:
pip install Cython --install-option="-no-cython-compile"
Также может помочь установка GCC.
Просто установите Cython с http://cython.org/ и установите его с помощью этой команды
sudo python setup.py install
Затем запустите команду
sudo python -c 'import Cython.Distutils'
и он будет установлен, и сообщение об ошибке исчезнет.