Нет модуля с именем pkg_resources

452

Я развертываю приложение 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не на пути?

igniteflow
источник
При установке nltk возникает такая же проблема. Хороший вопрос и полезный ответ
laike9m
4
pip uninstall -y setuptoolsа затем pip install setuptools==39.1.0работал для меня на Анаконде на Windows 10.
Райан
1
@Ryan также работал на меня в Ubuntu 16.04, спасибо, сэр!
ElectRocnic

Ответы:

634

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

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

Некоторые , возможно , потребуется (пере) установить python-setuptoolsпакет с помощью своего менеджера пакетов ( apt-get install, yum installи т.д.).

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

объяснение

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

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

Legacy Answer

Я столкнулся с тем же ImportErrorсегодня, пытаясь использовать пипс. Каким-то образом 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проще обновить до «оболочки совместимости», которая переключит вас . Но если вещи уже сломаны, не пытайтесь это сделать.

ВКК
источник
42
Пайплинг к местной команде всегда пугает меня, но это прекрасно работает. :) Я бежал, sudo pythonхотя YMMV.
Ник Рейман
4
Под Cygwin мне пришлось установить пакет python-setuptools . Это привело к тому , что easy_install снова заработал , и у него возникла та же проблема. Потом я easy_install pipснова заставлял пипс работать. Моя проблема возникла из-за того, что Cygwin обновил Python с 2.6 до 2.7 за моей спиной при установке чего-то не связанного.
Стив Питчерс
5
Это был лучший ответ в прошлом году ... но по состоянию на середину 2013 года distributeон устарел и setuptoolsявляется его преемником. Я отредактирую ответ, чтобы обновить его, но я не уверен, что это лучший способ справиться с этим, поэтому кто-то может отменить редактирование, в этом случае: перейдите сюда .
abarnert
1
Этот URL не работал для меня, но этот работал: peak.telecommunity.com/dist/ez_setup.py
ajtrichards
1
@Cerin: Было бы полезно всем, если бы вы сказали, что произошло, когда вы пытались. И вы использовали sudo, как @Nik отметил выше?
Майкл Шепер
125
sudo apt-get install --reinstall python-pkg-resources

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

Marek
источник
10
Я использую Python 3, поэтому мне пришлось запустить sudo apt-get install --reinstall python3-pkg-resources, и это исправило это. Спасибо!
Роберт Таунли
не помогло с yapf, я думаю, что-то делать с python3 / python2
Дон
53

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

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

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

Али Акдурак
источник
12
pip install --upgrade setuptoolsодин сделал трюк для меня.
Райан Так
мне нужноpip install --upgrade setuptools --user
dfrankow
5
Я не могу запустить pip install --upgrade setuptoolsиз-за той же ошибки:No module named pkg_resources
McLawrence
1
pip install --upgrade distributeсделал работу, когда использовал модуль venv Python 3. Python 2 поддерживает --distributeфлаг virtualenv , но его нужно устанавливать distributeв среде, созданной venv.
Нирмал
34

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

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

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

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt
детская коляска
источник
2
это помогло мне, когда ни одно из других решений не помогло (с использованием Ubuntu 16.04)
MIkee
Для сред, созданных модулем venv в Python 3, запуск pip install -U distributeпосле активации среды сделает эту работу.
Нирмал
17

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

yum install python-setuptools
Павел
источник
Это работает в Debian, если при замене «yum» на «sudo apt-get». Также: sudo apt-get install python3-setuptools
gridtrak
Это тот, кто сделал это для меня.
Тао Старбоу
У меня была эта проблема на CentOS 7, и python-setuptools уже был установлен, но sudo yum reinstall python-setuptoolsисправил ее.
убийца конуса
Сообщил об ошибке в CentOS.org bugs.centos.org/view.php?id=14042
rjt
14

У меня была эта ошибка ранее, и самый высокий рейтинг дал мне ошибку при попытке загрузить 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

ajtrichards
источник
curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
Команде
1
этот ответ спас меня с добавлением "| sudo python", потому что один "| python" не работал! Спасибо
patti_jane
14

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

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

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

ptim
источник
8

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

sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
sudo easy_install pip
Тарион
источник
1
sudoне нужно требовать в virtualenv
igniteflow
Правда, у меня просто была такая же проблема без virtualenv.
Тарион
5

Я исправил ошибку с помощью 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

mrgnw
источник
да, в некоторых проектах это решение лучше всего (для меня)
nguyên
3

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

/some/dir/requirements.txt / some / dir / site /

pip install -r needs.txt не сработает, и вы получите ошибку, описанную выше!

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

Судьи
источник
2

У меня была эта проблема, когда я активировал свой virtualenv как пользователь, отличный от того, кто его создал. Кажется, это проблема разрешения. Я обнаружил это, когда попробовал ответ @cwc и увидел это в выводе:

Installing easy_install script to /path/env/bin
error: /path/env/bin/easy_install: Permission denied

Переключение обратно на пользователя, который создал virtualenv, затем выполнение оригинальной pip installкоманды прошло без проблем. Надеюсь это поможет!

Мартейн де Миллиано
источник
2

У меня была эта проблема и сегодня. У меня проблема только внутри виртуальной среды.

Решением для меня было деактивировать виртуальную среду, удалить и затем удалить virtualenv с помощью pip и переустановить его. После этого я создал новую виртуальную среду для своего проекта, затем pip работал нормально как внутри виртуальной среды, так и в обычной среде.

arno_v
источник
2

Похоже, они отошли от bitbucket и теперь находятся на github ( https://github.com/pypa/setuptools )

Команда для запуска:

wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
shadyhill
источник
Файл "/python/Python-3.5.1/Lib/urllib/request.py", строка 162, в urlopen return opener.open (url, data, timeout) Файл "/python/Python-3.5.1/Lib/urllib /request.py ", строка 465, в открытом файле" /python/Python-3.5.1/Lib/urllib/request.py ", строка 488, в _open 'unknown_open', req) файле" /python/Python-3.5 .1 / Lib / urllib / request.py ", строка 443, в файле _call_chain result = func (* args) Файл" /python/Python-3.5.1/Lib/urllib/request.py ", строка 1310, в неизвестном повышении URLError ('неизвестный тип URL:% s'% type) urllib.error.URLError: <ошибка urlopen неизвестный тип URL: https>
JDOaktown
2

Для меня это оказалось проблемой с разрешениями site-packages. Так как это только моя среда разработки, я поднял разрешения и все снова работает:

sudo chmod -R a+rwx /path/to/my/venv/lib/python2.7/site-packages/
Kat
источник
2

Если вы столкнулись с этой проблемой в приложении, установленном через conda , решение (как указано в этом отчете об ошибке) состоит в простой установке инструментов настройки с помощью:

conda install setuptools
Габриель
источник
2

В Windows, с Python 3.7, это работало для меня:

pip install --upgrade setuptools --user

--user устанавливает пакеты в ваш домашний каталог, который не требует прав администратора.

Дэвид Яблонски
источник
2

простое решение заключается в том, что вы можете использовать conda для обновления setuptools или всей среды. (Специально для пользователей Windows.)

conda upgrade -c anaconda setuptools

если setuptools удален, вам необходимо установить setuptools снова.

conda install -c anaconda setuptools

если все эти методы не работают, вы можете обновить conda environement. Но я не рекомендую переустанавливать и удалять некоторые пакеты, потому что после этого ситуация усугубится.

Weibin Wang
источник
1

Видимо, вам не хватает setuptools. Некоторые версии virtualenv по умолчанию используют дистрибутив вместо setuptools. Используйте эту --setuptoolsопцию при создании virtualenv или установите VIRTUALENV_SETUPTOOLS=1в своей среде.

Данило Барген
источник
1

В моем случае изначально у меня было установлено 2 версии Python, а позже я удалил старую. Так что при создании виртуальной среды

virtualenv venv

имел в виду удаленный питон

Что сработало для меня

python3 -m virtualenv venv

То же самое верно, когда вы пытаетесь использовать пипс.

Афсан Абдулали Гуджарати
источник
0

Я столкнулся с этим ответом, когда пытался следовать этому руководству для OSX . То, что работало для меня, было, после бега python get-pip, я должен был ТАКЖЕ easy_install pip. Это решило проблему невозможности запустить pip вообще. Я сделал иметь кучу старых macport материала установлен. Это могло противоречить.

KitsuneYMG
источник
0

В Windows я установил pip, скачанный с www.lfd.uci.edu/~gohlke/pythonlibs/, а затем решил эту проблему.

Поэтому я должен был сначала установить setuptools (easy_install).

thinker3
источник
0

просто переустановите ваш setuptoolsпо:

$ sudo wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefefe74e
$ tar -zxvf setuptools-0.6c11.tar.gz
$ cd setuptools-0.6c11/
$ sudo python setup.py build
$ sudo python setup.py install
$ sudo pip install --upgrade setuptools

тогда все будет хорошо.

Скотт Ян
источник
0

Я использую CentOS 6.7, и мой python был просто обновлен с 2.6.6 до 2.7.11, после того, как попробовал так много разных ответов, наконец, следующий делает свою работу:

sudo yum install python-devel

Надеюсь помочь кому-то в такой же ситуации.

shellbye
источник
0

Ни один из опубликованных ответов у меня не сработал, поэтому я переустановил pip и все заработало!

sudo apt-get install python-setuptools python-dev build-essential 

sudo easy_install pip 

pip install --upgrade setuptools

(ссылка: http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/ )

user13107
источник
Traceback (последний вызов был последним): файл "/ usr / bin / easy_install", строка 5, в <module> из pkg_resources import load_entry_point ImportError: Нет модуля с именем 'pkg_resources'
JDOaktown
owner-Dimension-3000 owner # sudo easy_install pip Traceback (последний вызов был последним): файл "/ usr / bin / easy_install", строка 5, в <module> из pkg_resources import load_entry_point ImportError: Нет модуля с именем 'pkg_resources' owner-Dimension -3000 владелец # pip install --upgrade setuptools Traceback (последний вызов был последним): файл "/ usr / bin / pip", строка 5, в <module> из pkg_resources import load_entry_point ImportError: Нет модуля с именем 'pkg_resources' owner-Dimension -3000 владелец #
JDOaktown
Вы сначала удалили установленную версию пипса?
user13107
0

Я столкнулся с этой проблемой после обновления сборки Ubuntu. Кажется, он прошел и удалил настроенные инструменты во всех моих виртуальных средах.

Чтобы исправить это, я переустановил виртуальную среду обратно в целевой каталог. Это убрало недостающие инструменты установки и снова запустило работу.

например:

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir
Стив Д.
источник
0

Для меня хорошим решением было использовать --no-downloadопцию virtualenv ( VIRTUALENV_NO_DOWNLOAD=1 toxдля токсикоза).

Baczek
источник
0

В Opensuse 42.1 исправлена ​​эта проблема:

zypper in python-Pygments
Дэвид Хамнер
источник
0

ImportError: Нет модуля с именем pkg_resources: решение состоит в том, чтобы переустановить Python pip с помощью следующей команды.

Шаг: 1 Войдите в систему как пользователь root.

sudo su root

Шаг: 2 Удалите пакет python-pip, если он существует.

apt-get purge -y python-pip

Шаг: 3 Загрузите файлы с помощью команды wget (Загрузка файла в pwd)

wget https://bootstrap.pypa.io/get-pip.py

Шаг: 4 Запустите файл Python.

python ./get-pip.py

Шаг: 5 Окончательно выполните команду установки.

apt-get install python-pip

Примечание: пользователь должен быть пользователем root.

Тукадия Рамеш
источник
0

Я столкнулся с этой ошибкой в ​​моей среде Google App Engine. И pip install -t lib setuptoolsисправил проблему.

Мурат Чорлу
источник
0

Если вы используете Python 3, вы должны использовать pip3 вместо pip. Команда выглядит так$ pip3 install requirements.txt

user3266968
источник