Нет модуля с именем pkg_resources - PullRequest
401 голосов
/ 16 сентября 2011

Я развертываю приложение Django на сервере разработчика и получаю эту ошибку при запуске pip install -r requirements.txt:

Traceback (most recent call last):
  File "/var/www/mydir/virtualenvs/dev/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

pkg_resources представляется как setuptools. Первоначально я думал, что это может быть не установлено на Python в virtualenv, поэтому я установил setuptools 2.6 (та же версия, что и Python) для пакетов сайтов Python в virtualenv с помощью следующей команды:

sh setuptools-0.6c11-py2.6.egg --install-dir /var/www/mydir/virtualenvs/dev/lib/python2.6/site-packages

РЕДАКТИРОВАТЬ: Это происходит только внутри virtualenv. Если я открываю консоль за пределами virtualenv, то присутствует pkg_resources, но я все равно получаю ту же ошибку.

Есть идеи, почему pkg_resources не на пути?

Ответы [ 32 ]

585 голосов
/ 10 мая 2012

Обновление за июль 2018 года

Большинство людей теперь должны использовать pip install setuptools (возможно, с sudo).

Некоторым может понадобиться (пере) установить *Пакет 1009 * через менеджер пакетов (apt-get install, yum install и т. Д.).

Эта проблема может сильно зависеть от вашей ОС и среды разработки.См. Устаревшие / другие ответы ниже, если вышеупомянутое не работает для вас.

Пояснение

Это сообщение об ошибке вызвано отсутствующим / сломанным Python setuptoolsпакет.Согласно комментарию Мэтта М. и setuptools, проблема # 581 , приведенный ниже скрипт начальной загрузки больше не является рекомендуемым методом установки.

Инструкции по загрузочному сценарию останутся ниже, в случае есливсе еще полезен для всех.

Legacy Answer

Сегодня я столкнулся с тем же ImportError, пытаясь использовать pip.Каким-то образом пакет setuptools был удален в моей среде Python.

Чтобы устранить проблему, запустите сценарий установки для setuptools:

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

(или, если вы этого не сделаетеустановите wget (например, OS X), попробуйте

curl https://bootstrap.pypa.io/ez_setup.py | python

, возможно, с добавлением sudo.)

Если у вас есть какая-либо версия distributeили любой setuptools ниже 0,6, вам придется сначала удалить его. *

Подробнее см. Инструкции по установке .


* Если вы ужеесли у вас есть рабочий distribute, обновите его до "оболочки совместимости", которая переключит вас на setuptools.Но если вещи уже сломаны, не пытайтесь это сделать.

112 голосов
/ 16 ноября 2014
sudo apt-get install --reinstall python-pkg-resources

исправил это для меня в Debian.Похоже, что удаление некоторых пакетов .deb (в моем случае измененный набор) нарушило путь, используемый python для поиска пакетов

47 голосов
/ 22 октября 2013

Я видел эту ошибку при попытке установить rhodecode на virtualenv в Ubuntu 13.10.Для меня решение было запустить

pip install --upgrade setuptools
pip install --upgrade distribute 

, прежде чем я запустил easy_install rhodecode.

33 голосов
/ 23 сентября 2012

Это также случилось со мной. Я думаю, что проблема произойдет, если в файле require.txt есть запись «распределить», а в virtualenv используются setuptools. Пип попытается пропатчить setuptools, чтобы освободить место для распространения, но, к сожалению, он потерпит неудачу на полпути.

Самое простое решение - удалить ваш текущий virtualenv, а затем создать новый virtualenv с аргументом --distribute.

Пример использования virtualenvwrapper:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt
16 голосов
/ 03 июля 2015

В CentOS 6 установка пакета python-setuptools исправила его.

yum install python-setuptools
14 голосов
/ 30 апреля 2014

У меня была эта ошибка ранее, и ответ с самым высоким рейтингом дал мне ошибку при попытке загрузить файл ez_setup.py. Я нашел другой источник, чтобы вы могли запустить команду:

curl http://peak.telecommunity.com/dist/ez_setup.py | python

Я обнаружил, что мне также пришлось использовать sudo, чтобы он заработал, поэтому вам может потребоваться выполнить:

sudo curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python

Я также создал другое место, откуда скрипт можно загрузить:

https://gist.github.com/ajtrichards/42e73562a89edb1039f3

11 голосов
/ 30 августа 2017

После того, как я попробовал несколько из этих ответов, а затем обратился к коллеге, у меня в Ubuntu 16.04 сработало:

pip install --force-reinstall -U setuptools
pip install --force-reinstall -U pip

В моем случае проблема была только в старой версии подушки 3.1.1 (подушка 4.x работала нормально), и теперь она решена!

7 голосов
/ 07 ноября 2016

Нужно немного больше sudo.Затем использовал easy_install для установки pip.Работает.

sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
sudo easy_install pip
5 голосов
/ 19 ноября 2013

Я исправил ошибку с помощью virtualenv, выполнив следующее:

Скопировано pkg_resources.py из

/Library/Python/2.7/site-packages/setuptools

до

/Library/Python/2.7/site-packages/

Это может быть дешевый обходной путь, но он сработал для меня.

.

Если инструменты настройки не существуют, вы можете попробовать установить пакеты system-site-package, набрав virtualenv --system-site-packages /DESTINATION DIRECTORY, изменив последнюю часть на каталог, в который вы хотите установить. pkg_rousources.py будет находиться в этом каталоге в lib / python2.7 / site-packages

3 голосов
/ 18 декабря 2013

Для меня эта ошибка была вызвана тем, что у меня был подкаталог с названием "site"! Я не знаю, это ошибка в пипсах или нет, но я начал с:

/ некоторые / реж / requirements.txt / Некоторые / реж / сайт /

pip install -r needs.txt не будет работать, сообщая мне об ошибке выше!

переименование подпапки из "site" в "src" решило проблему! Может быть, Пип ищет "сайт-пакеты"? Сумасшедший.

...