Brak modułu o nazwie pkg_resources

452

Wdrażam aplikację Django na serwerze deweloperskim i uruchamiam ten błąd po uruchomieniu 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_resourceswydaje się być rozpowszechniany z setuptools. Początkowo myślałem, że to może nie być zainstalowane w Pythonie w virtualenv, więc zainstalowałem setuptools 2.6(taką samą wersję jak Python) do pakietów witryn Pythona w virtualenv za pomocą następującej komendy:

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

EDYCJA: Dzieje się tak tylko w virtualenv. Jeśli otworzę konsolę poza virtualenv, to pkg_resourcesjest obecny, ale wciąż pojawia się ten sam błąd.

Wszelkie pomysły, dlaczego pkg_resourcesnie jest na ścieżce?

igniteflow
źródło
Podczas instalowania nltk występuje ten sam problem. Dobre pytanie i pomocna odpowiedź
laike9m
4
pip uninstall -y setuptoolsa potem pip install setuptools==39.1.0pracował dla mnie nad Anacondą w systemie Windows 10.
Ryan
1
@Ryan również pracował dla mnie na Ubuntu 16.04, dziękuję, proszę pana!
ElectRocnic

Odpowiedzi:

634

Aktualizacja z lipca 2018 r

Większość ludzi powinna teraz używać pip install setuptools(prawdopodobnie z sudo).

Niektóre mogą wymagać (re) zainstalować python-setuptoolspakiet przez ich menedżera pakietów ( apt-get install, yum install, itd.).

Ten problem może w dużym stopniu zależeć od systemu operacyjnego i środowiska programisty. Zobacz poniższe / pozostałe odpowiedzi poniżej, jeśli powyższe nie działa dla Ciebie.

Wyjaśnienie

Ten komunikat o błędzie jest spowodowany brakującym / uszkodzonym setuptoolspakietem Python . Zgodnie z komentarzem Matta M. i setuptools nr 581 , skrypt bootstrap, o którym mowa poniżej, nie jest już zalecaną metodą instalacji.

Instrukcje skryptu bootstrap pozostaną poniżej, na wypadek, gdyby nadal były pomocne dla kogokolwiek.

Starsza odpowiedź

To samo spotkałem ImportErrordzisiaj podczas próby użycia pip. Jakoś setuptoolspakiet został usunięty w moim środowisku Python.

Aby rozwiązać problem, uruchom skrypt instalacyjny dla setuptools:

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

(lub jeśli nie masz wgetzainstalowanego (np. OS X), spróbuj

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

ewentualnie z przygotowanym sudo.)

Jeśli masz dowolną wersję distributelub wersję setuptoolsponiżej 0.6, musisz ją najpierw odinstalować. *

Więcej informacji znajduje się w instrukcji instalacji .


* Jeśli masz już działający distribute, setuptoolsłatwiej jest go uaktualnić do „opakowania zgodności”, na które się przełącza . Ale jeśli rzeczy są już zepsute, nie próbuj tego.

cwc
źródło
42
Przesyłanie curl do lokalnego polecenia zawsze mnie przeraża, ale działa to świetnie. :) Przebiegłem sudo pythonprzez YMMV.
Nik Reiman,
4
Pod Cygwinem musiałem zainstalować pakiet python-setuptools . Sprawiło to, że easy_install znów działał, co miało ten sam problem. Potem easy_install pipznów działałem pip. Mój problem powstał po aktualizacji Cygwina z Pythona z 2.6 do 2.7 za moimi plecami podczas instalowania czegoś niezwiązanego.
Steve Pitchers
5
To była najlepsza odpowiedź w zeszłym roku… ale od połowy 2013 roku distributejest przestarzała i setuptoolsjest jej następcą. Zedytuję odpowiedź, aby ją zaktualizować, ale nie jestem pewien, czy jest to najlepszy sposób, aby ją obsłużyć, więc ktoś może cofnąć edycję, w takim przypadku: Idź tutaj .
abarnert
1
Ten adres URL nie działał dla mnie, ale ten działał
ajtrichards
1
@Cerin: Byłoby bardziej pomocne dla wszystkich, gdybyś powiedział, co się stało, kiedy próbowałeś. I sudoużywałeś, jak zauważył @Nik powyżej?
Michael Scheper
125
sudo apt-get install --reinstall python-pkg-resources

naprawiłem to dla mnie w Debianie. Wygląda na to, że odinstalowanie niektórych pakietów .deb (w moim przypadku twisted set) popsuło ścieżkę używaną przez Pythona do znajdowania pakietów

Marek
źródło
10
Używam Python 3, więc musiałem uruchomić sudo apt-get install --reinstall python3-pkg-resources i to naprawiło. Dziękuję Ci!
Robert Townley,
chyba nie pomogło z yapf, mam coś wspólnego z python3 / python2
don bright
53

Widziałem ten błąd podczas próby zainstalowania rhodecode na virtualenv na Ubuntu 13.10. Dla mnie rozwiązaniem było uruchomienie

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

zanim uruchomię rhodecode easy_install.

Ali Akdurak
źródło
12
pip install --upgrade setuptoolssama zrobiła dla mnie lewę.
Ryan Tuck,
Potrzebowałempip install --upgrade setuptools --user
dfrankow
5
Nie mogę uruchomić z pip install --upgrade setuptoolspowodu tego samego błędu:No module named pkg_resources
McLawrence 28.04.17
1
pip install --upgrade distributewykonał zadanie przy użyciu modułu Venv Pythona 3. --distributeFlaga virtualenv obsługiwana przez Python 2 , ale należy ją zainstalować distributew środowiskach utworzonych przez venv.
Nirmal,
34

Zdarzyło mi się również. Myślę, że problem wystąpi, jeśli wymagania.txt zawierają wpis „rozpowszechniać”, podczas gdy virtualenv używa setuptools. Pip spróbuje załatać setuptools, aby zrobić miejsce na dystrybucję, ale niestety zawiedzie w połowie.

Łatwym rozwiązaniem jest usunięcie aktualnego virtualenv, a następnie utworzenie nowego virtualenv z argumentem --distribute.

Przykład użycia virtualenvwrapper:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt
wózek dziecięcy
źródło
2
pomogło mi to, gdy żadne inne rozwiązanie tego nie zrobiło (używając Ubuntu 16.04)
MIkee
W środowiskach utworzonych przez moduł Venv Pythona 3, uruchomienie pip install -U distributepo aktywacji środowiska wykona zadanie.
Nirmal,
17

W CentOS 6 instalacja pakietu python-setuptools naprawiła go.

yum install python-setuptools
Paweł
źródło
Działa to w Debianie, jeśli zastąpisz „yum” słowem „sudo apt-get”. Również: sudo apt-get install python3-setuptools
gridtrak
To ten, który mi to zrobił.
Tao Starbow
Miałem ten problem na CentOS 7, a Python-setuptools był już zainstalowany, ale sudo yum reinstall python-setuptoolsgo naprawiłem.
coneslayer
Zgłoszono błąd do CentOS.org bugs.centos.org/view.php?id=14042
rjt
14

Miałem ten błąd wcześniej i najwyżej oceniona odpowiedź dała mi błąd podczas próby pobrania ez_setup.pypliku. Znalazłem inne źródło, więc możesz uruchomić polecenie:

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

Stwierdziłem, że musiałem również użyć sudogo, aby działał, więc może być konieczne uruchomienie:

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

Utworzyłem również inną lokalizację, z której można pobrać skrypt:

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

ajtrichards
źródło
Polecenie „curl” nie potrzebuje sudo, więc może to być:curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
tombrown52,
1
ta odpowiedź uratowała mnie dzięki dodaniu „| sudo python”, ponieważ sam „| python” nie działał! Dzięki
patti_jane
14

Po wypróbowaniu kilku z tych odpowiedzi, a następnie skontaktowaniu się z kolegą, w Ubuntu 16.04 działało dla mnie:

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

W moim przypadku była to tylko stara wersja poduszki 3.1.1, która miała problemy (poduszka 4.x działała dobrze), i to już zostało rozwiązane!

ptim
źródło
8

Potrzebowałem trochę więcej sudo. Następnie użyłem easy_install do instalacji pip. Pracuje.

sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
sudo easy_install pip
Tarion
źródło
1
sudonie powinno być wymagane w virtualenv
igniteflow
To prawda, że ​​po prostu miałem ten sam problem bez virtualenv.
Tarion,
5

Naprawiłem błąd w virtualenv, robiąc to:

Skopiowano pkg_resources.py z

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

do

/Library/Python/2.7/site-packages/

To może być tanie obejście, ale zadziałało dla mnie.

.

Jeśli narzędzia instalacyjne nie istnieją, możesz spróbować zainstalować pakiety systemowe-witryny, pisząc virtualenv --system-site-packages /DESTINATION DIRECTORY, zmieniając ostatnią część na katalog, w którym chcesz zainstalować. pkg_rousources.pybędzie w tym katalogu w lib / python2.7 / site-packages

mrgnw
źródło
tak, w niektórych projektach takie rozwiązania są najlepsze (dla mnie)
nguyên
3

Dla mnie ten błąd był spowodowany, ponieważ miałem podkatalog o nazwie „strona”! Nie wiem, czy to błąd pip, czy nie, ale zacząłem od:

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

pip install -r wymagania.txt nie działałoby, dając mi powyższy błąd!

zmiana nazwy podfolderu z „site” na „src” naprawiła problem! Może pip szuka „pakietów witryn”? Zwariowany.

jdg
źródło
2

Miałem ten problem, kiedy aktywowałem virtualenv jako inny użytkownik niż ten, który go utworzył. Wydaje się, że jest to problem z pozwoleniem. Odkryłem to, kiedy wypróbowałem odpowiedź przez @cwc i zobaczyłem to w danych wyjściowych:

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

Powrót do użytkownika, który utworzył virtualenv, a następnie uruchomienie oryginalnej pip installkomendy przebiegło bez problemów. Mam nadzieję że to pomoże!

Martijn de Milliano
źródło
2

Też miałem dzisiaj ten problem. Problem mam tylko w wirtualnej env.

Rozwiązaniem było dla mnie dezaktywacja wirtualnej env, usunięcie, a następnie odinstalowanie virtualenv z pipem i ponowna instalacja. Następnie stworzyłem nową wirtualną env dla mojego projektu, a następnie pip działał dobrze zarówno w środowisku wirtualnym, jak i w normalnym środowisku.

arno_v
źródło
2

Wygląda na to, że odeszli od bitbucket i są teraz na github ( https://github.com/pypa/setuptools )

Polecenie do uruchomienia to:

wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
Shadyhill
źródło
Plik „/python/Python-3.5.1/Lib/urllib/request.py”, wiersz 162, w urlopen return opener.open (adres URL, dane, limit czasu) Plik ”/python/Python-3.5.1/Lib/urllib /request.py ”, wiersz 465, w otwartym pliku„ /python/Python-3.5.1/Lib/urllib/request.py ”, wiersz 488, w _open„ nieznany_otwarty ”, req) Plik” /python/Python-3.5 .1 / Lib / urllib / request.py ”, wiersz 443, w _call_chain result = func (* args) Plik„ /python/Python-3.5.1/Lib/urllib/request.py ”, wiersz 1310, w nieznanym otwarciu URLError ('nieznany typ adresu URL:% s'% type) urllib.error.URLError: <błąd urlopen nieznany typ
adresu
2

Dla mnie okazało się, że jest to problem z uprawnieniami site-packages. Ponieważ jest to tylko moje środowisko programistyczne, podniosłem uprawnienia i wszystko znów działa:

sudo chmod -R a+rwx /path/to/my/venv/lib/python2.7/site-packages/
kat
źródło
2

Jeśli napotykasz ten problem z aplikacją zainstalowaną za pośrednictwem conda , rozwiązaniem (jak podano w tym raporcie o błędzie) jest po prostu instalacja narzędzi instalacyjnych z:

conda install setuptools
Gabriel
źródło
2

W systemie Windows z Pythonem 3.7 to zadziałało dla mnie:

pip install --upgrade setuptools --user

--user instaluje pakiety w twoim katalogu domowym, który nie wymaga uprawnień administratora.

David Jabłoński
źródło
2

prosta rezolucja polega na tym, że możesz użyć conda do aktualizacji setuptools lub całego środowiska. (Specjalnie dla użytkownika systemu Windows).

conda upgrade -c anaconda setuptools

jeśli setuptools zostanie usunięte, musisz ponownie zainstalować setuptools.

conda install -c anaconda setuptools

jeśli te wszystkie metody nie działają, możesz zaktualizować środowisko Conda. Ale nie zalecam ponownej instalacji i odinstalowywania niektórych pakietów, ponieważ po tym pogorszy to sytuację.

weibin Wang
źródło
1

Najwyraźniej brakuje Ci setuptools. Niektóre wersje virtualenv domyślnie używają distribute zamiast setuptools. Użyj tej --setuptoolsopcji podczas tworzenia virtualenv lub ustaw VIRTUALENV_SETUPTOOLS=1w swoim środowisku.

Danilo Bargen
źródło
1

W moim przypadku na początku zainstalowałem 2 wersje Pythona, a później usunąłem starszą. Podczas tworzenia wirtualnego środowiska

virtualenv venv

odnosiło się do odinstalowanego pytona

Co dla mnie zadziałało

python3 -m virtualenv venv

To samo jest prawdą, gdy próbujesz użyć pip.

Afsan Abdulali gudżarati
źródło
0

Natknąłem się na tę odpowiedź, gdy próbowałem postępować zgodnie z tym przewodnikiem dla OSX . To, co zadziałało, to po biegu python get-pipmusiałem RÓWNIEŻ easy_install pip. Naprawiono problem polegający na tym, że w ogóle nie można uruchomić pipa. I tak masz kilka zainstalowanym starym macport rzeczy. To mogło być sprzeczne.

KitsuneYMG
źródło
0

po prostu zainstaluj ponownie 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

wtedy wszystko będzie dobrze.

Scott Yang
źródło
0

Używam CentOS 6.7, a mój python właśnie uaktualnił się z wersji 2.6.6 do wersji 2.7.11, po wypróbowaniu tak wielu różnych odpowiedzi, w końcu następująca:

sudo yum install python-devel

Mam nadzieję, że pomogę komuś w tej samej sytuacji.

shellbye
źródło
0

Żadna z opublikowanych odpowiedzi nie działała dla mnie, więc ponownie zainstalowałem pip i zadziałało!

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

sudo easy_install pip 

pip install --upgrade setuptools

(odniesienie: http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/ )

użytkownik13107
źródło
Traceback (ostatnie ostatnie połączenie): Plik „/ usr / bin / easy_install”, wiersz 5, w <module> z pkg_resources import load_entry_point ImportError: Żaden moduł o nazwie „pkg_resources”
JDOaktown
owner-Dimension-3000 owner # sudo easy_install pip Traceback (ostatnie połączenie ostatnio): Plik „/ usr / bin / easy_install”, wiersz 5, w <module> z pkg_resources import load_entry_point ImportError: Brak modułu o nazwie „pkg_resources” właściciel-Wymiar -3000 właściciel # pip instalacja - aktualizacja setuptools Traceback (ostatnie połączenie ostatnio): Plik „/ usr / bin / pip”, wiersz 5, w <module> z pkg_resources import load_entry_point ImportError: Brak modułu o nazwie „pkg_resources” właściciel-Wymiar -3000 właściciel #
JDOaktown
czy po raz pierwszy usunąłeś zainstalowaną wersję PIP?
user13107
0

Napotkałem ten problem po aktualizacji mojej kompilacji Ubuntu. Wygląda na to, że przeszedł i usunął narzędzia konfiguracji we wszystkich moich środowiskach wirtualnych.

Aby temu zaradzić, ponownie zainstalowałem środowisko wirtualne w katalogu docelowym. To wyczyściło brakujące narzędzia instalacyjne i sprawiło, że wszystko znów działało.

na przykład:

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir
Steve D.
źródło
0

Dla mnie dobrą poprawką było użycie --no-downloadopcji virtualenv ( VIRTUALENV_NO_DOWNLOAD=1 toxdla toksyny).

Baczek
źródło
0

W opensuse 42.1 następujące problemy naprawiły:

zypper in python-Pygments
David Hamner
źródło
0

ImportError: Brak modułu o nazwie pkg_resources: rozwiązaniem jest ponowna instalacja pip python pip przy użyciu następującego polecenia.

Krok: 1 Zaloguj się jako użytkownik root.

sudo su root

Krok: 2 Odinstaluj pakiet python-pip, jeśli istnieje.

apt-get purge -y python-pip

Krok: 3 Pobierz pliki za pomocą polecenia wget (Pobieranie pliku w pwd)

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

Krok: 4 Uruchom plik python.

python ./get-pip.py

Krok: 5 Ostatecznie exicute polecenie instalacji.

apt-get install python-pip

Uwaga: użytkownik musi być rootem.

Tukadiya Ramesh
źródło
0

Wystąpił ten błąd w moim środowisku Google App Engine. I pip install -t lib setuptoolsnaprawiłem problem.

Murat Çorlu
źródło
0

Jeśli używasz Python 3, powinieneś użyć pip3 zamiast pip. Komenda wygląda jak$ pip3 install requirements.txt

użytkownik3266968
źródło