Немає модуля з іменем 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

EDIT: Це відбувається лише всередині virtualenv. Якщо я відкрию консоль поза virtualenv, тоді pkg_resourcesвона присутня, але я все одно отримую ту саму помилку.

Будь-які ідеї, чому pkg_resourcesне на шляху?


Під час встановлення nltk трапляється така ж проблема. Добре запитання та корисна відповідь
laike9m

4
pip uninstall -y setuptoolsа потім pip install setuptools==39.1.0працював для мене над Anaconda в Windows 10.
Райан

1
@Ryan працював для мене і на Ubuntu 16.04, дякую, добрий сер!
ElectRocnic

Відповіді:


634

Оновлення липня 2018 року

Зараз більшість людей повинні використовувати pip install setuptools(можливо, з sudo).

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

Ця проблема може сильно залежати від вашої ОС та середовища розробників. Дивіться застарілі / інші відповіді нижче, якщо вищезгадане не працює для вас.

Пояснення

Це повідомлення про помилку викликано відсутнім / пошкодженим setuptoolsпакетом 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формою.)

Якщо у вас є будь-яка версія distributeабо setuptoolsнижче 0,6, вам доведеться спочатку її видалити. *

Детальнішу інформацію див. У Інструкції з установки .


* Якщо у вас вже є робочий distribute, оновити його до "обгортки сумісності", який переходить на вас setuptools, простіше. Але якщо речі вже зламані, не намагайтеся цього робити.


42
Передача скручування до локальної команди мене завжди лякає, але це чудово працює. :) Я бігав, sudo pythonхоча YMMV.
Нік Рейман

4
Під Cygwin мені довелося встановити пакет python-setuptools . Це знов запрацювало easy_install , який зазнав тієї ж проблеми. Тоді я easy_install pipзнову працював з 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 використовує для пошуку пакетів


10
Я використовую Python 3, тому мені довелося запустити sudo apt-get install - перевстановити python3-pkg-ресурси, і це виправлено. Дякую!
Роберт Таунлі

не допомогло yapf я здогадуюсь, щось робити з python3 / python2
don яскравий

53

Я бачив цю помилку під час спроби встановити rhodecode у virtualenv на ubuntu 13.10. Для мене рішення було запустити

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

перш ніж запустити easy_install rhodecode.


12
pip install --upgrade setuptoolsпоодинці зробив для мене трюк.
Ryan Tuck

мені потрібно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. --distributeПрапор підтримується virtualenv Python 2 , але його потрібно встановити distributeна середовищах, створених venv.
Nirmal

34

Так само сталося і зі мною. Я думаю, що проблема виникне, якщо вимоги.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)
MIkee,

Для середовищ, створених модулем venv Python 3, запуск pip install -U distributeпісля активації середовища виконає цю роботу.
Nirmal

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


Команда "curl" не потребуватиме sudo, тому це може бути:curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
tombrown52

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 справно працювала), і це вирішено!


8

Потрібно було трохи більше судо. Потім використовується easy_install для установки pip. Працює.

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

1
sudoне потрібно вимагати у virtualenv
igniteflow

Правда, у мене було саме те саме питання без віртуалів.
Таріон

5

Я виправив помилку з virtualenv, зробивши це:

Скопійовано pkg_resources.py з

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

до

/Library/Python/2.7/site-packages/

Це може бути дешевим рішенням, але це працювало для мене.

.

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


так, у деяких проектах це рішення найкраще (для мене)
nguyên

3

Для мене ця помилка була причиною, тому що у мене був підкаталог під назвою "сайт"! Я не знаю, чи це помилка в піпсі чи ні, але я почав з:

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

pip install -r вимоги.txt не працюватиме, даючи мені вищезгадану помилку!

перейменування підпапки з "сайту" на "src" виправлено проблему! Можливо, pip шукає "сайти-пакети"? Божевільний.


2

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

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

Переключившись назад на користувача, який створив virtualenv, а потім виконати оригінальну pip installкоманду пройшло без проблем. Сподіваюся, це допомагає!


2

У мене ця проблема була і сьогодні. Проблему я отримав лише всередині віртуального оточення.

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


2

Схоже, вони відійшли від бітбукета і тепер перебувають на github ( https://github.com/pypa/setuptools )

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

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

Файл "/python/Python-3.5.1/Lib/urllib/request.py", рядок 162, у urlopen return opener.open (url, data, timeout) File "/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'% тип) urllib.error.URLError: <помилка urlopen невідомий тип URL: https>
JDOaktown

2

Для мене це виявилось проблемою дозволів site-packages. Оскільки це лише моє середовище розробників, я підвищив дозволи та все знову працює:

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


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

якщо ці всі методи не працюють, ви можете оновити оточення конди. Але я не рекомендую вам перевстановлювати та видаляти деякі пакунки, оскільки після цього це погіршить ситуацію.


1

Мабуть, вам не вистачає налаштувань. Деякі версії virtualenv за замовчуванням використовують distribute замість setuptools. Використовуйте --setuptoolsпараметр під час створення virtualenv або встановіть VIRTUALENV_SETUPTOOLS=1у своєму оточенні.


1

У моєму випадку у мене були спочатку встановлені дві версії python, а пізніше я видалив старішу. Отже, створюючи віртуальне середовище

virtualenv venv

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

Що працювало на мене

python3 -m virtualenv venv

Те саме відбувається, коли ви намагаєтесь використовувати pip.


0

Я натрапив на цю відповідь, коли намагався дотримуватися цього керівництва для OSX . Те, що працювало для мене, після бігу python get-pipмені довелося ТАКОЖ easy_install pip. Це вирішило питання про те, що взагалі не можна запускати pip. У мене було встановлено купу старих речей з макпорту. Це, можливо, суперечило.



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, і мій пітон був просто оновлений з 2.6.6 до 2.7.11, після того, як спробував стільки різних відповідей, нарешті наступний виконає цю роботу:

sudo yum install python-devel

Сподіваюся, що допоможе комусь у тій же ситуації.


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/ )


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" -власник-розмір -3000 власник # встановити pip - оновлення настройок налаштування Traceback (останній виклик останній): файл "/ usr / bin / pip", рядок 5, в <module> з pkg_resources import load_entry_point ImportError: Немає модуля з назвою "pkg_resources 'owner-Dimension -3000 власник #
JDOaktown

Ви вперше видалили встановлену версію pip?
користувач13107

0

Я зіткнувся з цією проблемою після оновлення моєї збірки Ubuntu. Здається, я пройшов і видалив інструменти налаштування у всіх моїх віртуальних середовищах.

Щоб виправити це, я перевстановив віртуальне середовище назад у цільовий каталог. Це очистило відсутні інструменти налаштування і знову почало працювати.

наприклад:

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir

0

Для мене гарним виправленням було використання --no-downloadпараметра для virtualenv ( VIRTUALENV_NO_DOWNLOAD=1 toxдля токсику.)



0

ImportError: Немає модуля з іменем pkg_resources: рішенням є перевстановлення pyphon 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.