Подтвердить что ты не робот

Python ImportError: Cython.Distutils

У меня возникла странная проблема при попытке установить библиотеку python с помощью файла setup.py. когда я запускаю файл setup.py, я получаю ошибку импорта, говоря ImportError: No module named Cython.Distutils, но у меня есть такой модуль, и я могу без проблем импортировать его в командной строке python. Почему я могу получить эту ошибку импорта?

Я просмотрел несколько десятков случаев ошибок импорта, прочитал об импорте и пакетах и ​​т.д., но, похоже, не понял этого. Я сейчас на два-два дня застрял в этом месте, поэтому я рассчитываю на время попросить о помощи!

Библиотека называется zenlib. Я думаю, что проблема может быть связана с тем фактом, что я использую Enthought Python Distribution, которое я установил заранее, вместо того, чтобы использовать Python2.7, который поставляется с Ubuntu 12.04.

Больше фона: Вот именно то, что я получаю при попытке запустить setup.py:

[email protected]:~/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, - это то, что запускается по умолчанию, добавляя переменную среды 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. Наверное, глупо пытаться, и ничего не изменилось.

Не могу придумать, что попробовать дальше!? Любые идеи?

4b9b3361

Ответ 1

Ваше sudo не получает правильный питон. Это известное поведение sudo в Ubuntu. Для получения дополнительной информации см. question. Вы должны убедиться, что sudo вызывает правильный питон, либо используя полный путь:

sudo /usr/local/epd/bin/python setup.py install

или выполнив следующее (в bash):

alias sudo='sudo env PATH=$PATH'
sudo python setup.py install

Ответ 2

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

pip install cython

Ответ 3

Запустить

which python

Это путь к питону, который ваша система тоже не выполняла. затем перейдите к методу @tiago:

sudo <output of which python> setup.py install

Ответ 4

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

Ответ 5

Для использования python3

sudo apt-get install cython3

Для использования python2

sudo apt-get install cython

Подробности можно прочитать на этом

Ответ 6

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

Ответ 7

Это легко.

Сначала вы можете попробовать пакет install cython.

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

Ответ 8

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

sudo python setup.py install

Затем запустите команду

sudo python -c 'import Cython.Distutils'

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