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

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

pip install cython

Для использования 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'

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

Другие вопросы по тегам