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

335

Я развертываю приложение Django для dev-сервера и нажимаю эту ошибку, когда я запускаю pip install 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. Если я открываю консоль вне виртуального пространства, тогда присутствует pkg_resources

но я все равно получаю ту же ошибку. Любые идеи относительно того, почему pkg_resources не находится на пути?

  • 0
    При установке nltk возникает такая же проблема. Хороший вопрос и полезный ответ
  • 3
    pip uninstall -y setuptools а затем pip install setuptools==39.1.0 у меня работает на Anaconda в Windows 10.
Показать ещё 1 комментарий
Теги:
pip
virtualenv
setuptools

30 ответов

581
Лучший ответ

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

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

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

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

объяснение

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

Инструкции для сценария бутстрапа будут оставаться ниже, если это все еще полезно для всех.

Наследственный ответ

Сегодня я столкнулся с тем же 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 preended.)

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

Дополнительную информацию см. В Инструкции по установке.


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

  • 0
    Прочитав этот комментарий, я понял, что использую pip, одновременно обновляя свои системные пакеты (включая несколько пакетов распространения Python) в фоновом режиме. Оказалось, плохая идея ...
  • 36
    Пайпл лок к местной команде всегда пугает меня, но это прекрасно работает. :) Я управлял sudo python хотя YMMV.
Показать ещё 19 комментариев
99
sudo apt-get install --reinstall python-pkg-resources

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

  • 8
    Большой! Это решает и эту проблему в Ubuntu
  • 1
    у меня не сработало, такая же ошибка
Показать ещё 1 комментарий
41

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

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

прежде чем запустить run_install roodecode.

  • 7
    pip install --upgrade setuptools себе pip install --upgrade setuptools мне.
  • 0
    мне нужно pip install --upgrade setuptools --user
Показать ещё 3 комментария
31

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

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

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

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

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

yum install python-setuptools
  • 0
    Это работает в Debian, если при замене «yum» на «sudo apt-get». Также: sudo apt-get install python3-setuptools
  • 0
    Это тот, кто сделал это для меня.
Показать ещё 3 комментария
13

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

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

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

  • 0
    Команде "curl" не понадобится sudo, поэтому это может быть: curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
  • 1
    этот ответ спас меня с добавлением "| sudo python", потому что один "| python" не работал! Спасибо
7

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

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

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

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

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

4

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

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

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

to

/Library/Python/2.7/site-packages/

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

.

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

  • 0
    да в некоторых проектах это решение лучше всего (для меня)
3

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

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

pip install -r requirements.txt не работает, что дает мне ошибку выше!

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

2

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

sudo chmod -R a+rwx /path/to/my/venv/lib/python2.7/site-packages/
2

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

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

wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
  • 0
    Файл "/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>
2

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

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

2

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

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

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

1

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

0

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

conda install setuptools
0

yum -y install python-setuptools

я настраиваю Ceph, возникает проблема с выполнением команды "$ ceph-deploy new node1", и я выполняю команду "$ yum -y install python-setuptools", тогда проблема ушла.

0

У меня была та же проблема, когда я использовал easy-install для установки pip для python 2.7.14. Для меня решение было (может быть, не лучшим, но работало для меня, и это, вероятно, самый простой), что папка, содержащая easy-install.py, также содержала папку pkg_resources, и я скопировал эту папку в в той же папке, где мой pip-script.py script был (python27\Scripts). С тех пор я нашел его в папке python27\Lib\site-packages\pip-9.0.1-py2.7.egg\pip\_vendor, возможно, было бы лучшим решением для изменения файла pip-script.py для его импорта.

0

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

0

Следующее решение, предложенное Tukadiya Ramesh, работало для меня, однако я хочу указать, что вы должны использовать правильные двоичные файлы/инструменты, соответствующие вашей среде, например, для меня у меня установлен python3.6 (python 3):

ImportError: нет модуля с именем pkg_resources: решение переустановить питон python с помощью следующей команды находится ниже.

Шаг: 1 Войдите в пользователя root.

sudo su root

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

apt-get purge -y python-pip (использовать python3-pip, если ошибка указывает на. /python 3/..)

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

wget https://bootstrap.pypa.io/get-pip.py ( доступна версия 3.2, используйте это в соответствии с вашим env)

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

python./get-pip.py(, если ошибка связана с python 3, то вы хотите использовать python3 или python3.6 и т.д. [согласно вашему env.])

Шаг: 5 Завершите выполнение команды установки.

apt-get install python-pip ( снова, используйте python3-pip, как на шаге 2)

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

P.S. эта проблема решена с моим менеджером обновлений в Ubuntu 16. Он продолжал сбой с ошибками, связанными с импортом Python. Если у вас такая же проблема, попробуйте запустить sudo aptd, если она выдает ошибку (извините, что у меня нет точной), связанной с Python, тогда вы столкнулись с той же проблемой, что и я.

0

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

0

ImportError: нет модуля с именем pkg_resources: решение переустановить питон python с использованием следующей команды:

Шаг: 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 Окончательная команда установки exicute.

apt-get install python-pip

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

  • 0
    Это не сработало для меня.
0

В Opensuse 42.1 исправлена ​​следующая проблема:

zypper in python-Pygments
0

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

0

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

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

например:.

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir
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/)

  • 0
    Traceback (последний вызов был последним): файл "/ usr / bin / easy_install", строка 5, в <module> из pkg_resources import load_entry_point ImportError: Нет модуля с именем 'pkg_resources'
  • 0
    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 владелец #
Показать ещё 1 комментарий
0

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

sudo yum install python-devel

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

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

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

Итак, я должен был сначала установить setuptools (easy_install).

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню