Nessun modulo chiamato pkg_resources


452

Sto distribuendo un'app Django su un server di sviluppo e sto colpendo questo errore quando eseguo 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_resourcessembra essere distribuito con setuptools. Inizialmente pensavo che questo non potesse essere installato su Python in virtualenv, quindi ho installato setuptools 2.6(stessa versione di Python) nei pacchetti di siti Python in virtualenv con il seguente comando:

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

EDIT: questo accade solo all'interno di virtualenv. Se apro una console all'esterno di virtualenv allora pkg_resourcesè presente, ma sto ancora ottenendo lo stesso errore.

Qualche idea sul perché pkg_resourcesnon è sulla strada giusta?


Quando si installa nltk, si verifica lo stesso problema. Buona domanda e risposta utile
laike9m

4
pip uninstall -y setuptoolse poi ha pip install setuptools==39.1.0lavorato per me su Anaconda su Windows 10.
Ryan,

1
@Ryan ha lavorato anche per me su Ubuntu 16.04, grazie gentile signore!
ElectRocnic,

Risposte:


634

Aggiornamento di luglio 2018

La maggior parte delle persone dovrebbe ora usare pip install setuptools(possibilmente con sudo).

Alcuni possono bisogno di (ri) installare il python-setuptoolspacchetto tramite il loro gestore di pacchetti ( apt-get install, yum install, ecc).

Questo problema può dipendere fortemente dal sistema operativo e dall'ambiente di sviluppo. Vedi l'eredità / altre risposte di seguito se quanto sopra non funziona per te.

Spiegazione

Questo messaggio di errore è causato da un setuptoolspacchetto Python mancante / rotto . Per il commento # 581 di Matt M. e il problema # 581 di setuptools , lo script bootstrap indicato di seguito non è più il metodo di installazione consigliato.

Le istruzioni dello script bootstrap rimarranno di seguito, nel caso siano ancora utili a chiunque.

Risposta legacy

Ho incontrato lo stesso ImportErroroggi mentre cercavo di usare pip. In qualche modo il setuptoolspacchetto era stato cancellato nel mio ambiente Python.

Per risolvere il problema, eseguire lo script di installazione per setuptools:

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

(o se non hai wgetinstallato (ad esempio OS X), prova

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

possibilmente con sudoanteposto.)

Se disponi di una versione distributeo di una versione setuptoolsinferiore a 0.6, dovrai prima disinstallarla. *

Vedere le istruzioni di installazione per ulteriori dettagli.


* Se hai già un lavoro distribute, aggiornarlo al "wrapper di compatibilità" che ti commuta è più setuptoolsfacile. Ma se le cose sono già rotte, non provarci.


42
Piping curl a un comando locale mi spaventa sempre, ma funziona alla grande. :) Avevo corso sudo pythonattraverso YMMV.
Nik Reiman,

4
Sotto Cygwin ho dovuto installare il pacchetto python-setuptools . Ciò ha ripristinato il funzionamento di easy_install , che aveva subito lo stesso problema. Poi ho usato easy_install pipper far funzionare di nuovo pip. Il mio problema è nato da Cygwin che aggiorna Python dalla 2.6 alla 2.7 alle mie spalle durante l'installazione di qualcosa di indipendente.
Steve Pitchers,

5
Questa è stata la migliore risposta dell'anno scorso ... ma a metà 2013, distributeè obsoleta ed setuptoolsè il suo successore. Modificherò la risposta per aggiornarla, ma non sono sicuro che sia il modo migliore per gestirla, quindi qualcuno potrebbe ripristinare la modifica, nel qual caso: Vai qui .
abarnert,

1
Questo URL non ha funzionato per me, ma questo ha funzionato: peak.telecommunity.com/dist/ez_setup.py
ajtrichards

1
@Cerin: Sarebbe più utile per tutti se dici cosa è successo quando hai provato. E hai usato sudo, come notato sopra @ Nik?
Michael Scheper,

124
sudo apt-get install --reinstall python-pkg-resources

riparato per me in Debian. Sembra che disinstallare alcuni pacchetti .deb (set contorto nel mio caso) abbia interrotto il percorso utilizzato da Python per trovare i pacchetti


9
Sto usando Python 3, quindi ho dovuto eseguire sudo apt-get install --reinstall python3-pkg-resources e questo è stato risolto. Grazie!
Robert Townley,

non ho aiutato con yapf, credo, qualcosa a che fare con python3 / python2
don bright

53

Ho visto questo errore durante il tentativo di installare il codice rhodec su un virtualenv su Ubuntu 13.10. Per me la soluzione era quella di correre

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

prima di eseguire easy_install rhodecode.


12
pip install --upgrade setuptoolsda solo ha fatto il trucco per me.
Ryan Tuck,

ne avevo bisognopip install --upgrade setuptools --user
dfrankow

5
Non posso correre a pip install --upgrade setuptoolscausa dello stesso errore:No module named pkg_resources
McLawrence,

1
pip install --upgrade distributefatto il lavoro usando il modulo venv di Python 3. Il --distributeflag virtualenv di Python 2 è supportato , ma è necessario installarlo distributenegli ambienti creati da venv.
Nirmal,

34

È successo anche a me. Penso che il problema si verificherà se il requisito.txt contiene una voce "distribuisci" mentre virtualenv utilizza setuptools. Pip proverà a patchare gli strumenti di installazione per fare spazio alla distribuzione, ma sfortunatamente fallirà a metà strada.

La soluzione semplice è eliminare il tuo virtualenv corrente, quindi crearne uno nuovo con argomento --distribute.

Un esempio se si utilizza virtualenvwrapper:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt

2
questo mi ha aiutato quando nessuna delle altre soluzioni ha funzionato (usando Ubuntu 16.04)
MIkee,

Per gli ambienti creati dal modulo venv di Python 3, l'esecuzione pip install -U distributedopo aver attivato l'ambiente farà il lavoro.
Nirmal,

17

In CentOS 6 l'installazione del pacchetto python-setuptools lo ha riparato.

yum install python-setuptools

Funziona in Debian se si sostituisce "yum" con "sudo apt-get". Inoltre: sudo apt-get install python3-setuptools
gridtrak,

Questo è quello che l'ha fatto per me.
Tao Starbow,

Ho avuto questo problema su CentOS 7 e python-setuptools era già installato, ma l' sudo yum reinstall python-setuptoolsho risolto.
Coneslayer

Segnalato il bug a CentOS.org bugs.centos.org/view.php?id=14042
rjt

14

Ho avuto questo errore prima e la risposta più alta mi ha dato un errore nel tentativo di scaricare il ez_setup.pyfile. Ho trovato un'altra fonte in modo da poter eseguire il comando:

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

Ho scoperto che dovevo usare anche sudoper farlo funzionare, quindi potrebbe essere necessario eseguire:

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

Ho anche creato un'altra posizione da cui è possibile scaricare lo script:

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


Il comando "arricciatura" non avrebbe bisogno di sudo, quindi potrebbe essere:curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
tombrown52

1
questa risposta mi ha salvato con l'aggiunta di "| sudo python", perché "| python" da solo non ha funzionato! Grazie
patti_jane il

14

Dopo aver provato alcune di queste risposte, poi ho contattato un collega, quello che ha funzionato per me su Ubuntu 16.04 è stato:

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

Nel mio caso, era solo una vecchia versione del cuscino 3.1.1 ad avere problemi (il cuscino 4.x funzionava bene), e ora è stato risolto!


8

Avevo bisogno di un po 'più di sudo. Quindi utilizzare easy_install per installare pip. Lavori.

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

1
sudonon dovrebbe essere richiesto in virtualenv
igniteflow il

È vero, ho avuto lo stesso problema senza virtualenv.
Tarion,

5

Ho corretto l'errore con virtualenv facendo questo:

Copiato pkg_resources.py da

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

per

/Library/Python/2.7/site-packages/

Potrebbe essere una soluzione economica, ma ha funzionato per me.

.

Se gli strumenti di installazione non esistono, puoi provare a installare i pacchetti del sito di sistema digitando virtualenv --system-site-packages /DESTINATION DIRECTORY, modificando l'ultima parte in modo che sia la directory in cui vuoi installare. pkg_rousources.pysarà sotto quella directory in lib / python2.7 / site-pacchetti


sì in alcuni progetti, questa soluzione è la migliore (per me)
nguyên

3

Per me questo errore è stato causato perché avevo una sottodirectory chiamata "site"! Non so se si tratta di un bug pip oppure no, ma ho iniziato con:

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

pip install -r Requisiti.txt non funzionerebbe, dandomi l'errore sopra!

rinominare la sottocartella da "site" a "src" risolto il problema! Forse pip sta cercando "site-pacchetti"? Pazzo.


2

Ho avuto questo problema quando ho attivato virtualenv come utente diverso da quello che lo ha creato. Sembra essere un problema di autorizzazione. L'ho scoperto quando ho provato la risposta di @cwc e l'ho visto nell'output:

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

Tornare indietro all'utente che ha creato virtualenv, quindi eseguire il pip installcomando originale è andato senza problemi. Spero che sia di aiuto!


2

Ho avuto questo problema anche oggi. Ho avuto solo il problema all'interno dell'env virtuale.

La soluzione per me era disattivare l'env virtuale, eliminare e quindi disinstallare virtualenv con pip e reinstallarlo. Dopo di che ho creato un nuovo ambiente virtuale per il mio progetto, quindi pip ha funzionato bene sia all'interno dell'ambiente virtuale che nell'ambiente normale.


2

Sembra che si siano allontanati da bitbucket e ora siano su github ( https://github.com/pypa/setuptools )

Il comando da eseguire è:

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

File "/python/Python-3.5.1/Lib/urllib/request.py", riga 162, in urlopen return opener.open (url, data, timeout) File "/python/Python-3.5.1/Lib/urllib /request.py ", riga 465, nel file aperto" /python/Python-3.5.1/Lib/urllib/request.py ", riga 488, in _open 'unknown_open', req) File" /python/Python-3.5 .1 / Lib / urllib / request.py ", riga 443, in _call_chain result = func (* args) File" /python/Python-3.5.1/Lib/urllib/request.py ", riga 1310, in unknown_open raise URLError ('tipo di url sconosciuto:% s'% tipo) urllib.error.URLError: <errore urlopen tipo di url sconosciuto: https>
JDOaktown

2

Per me, si è rivelato essere un problema di autorizzazioni site-packages. Dal momento che è solo il mio ambiente di sviluppo, ho aumentato le autorizzazioni e tutto funziona di nuovo:

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

2

Se si riscontra questo problema con un'applicazione installata tramite conda , la soluzione (come indicato nella presente segnalazione di bug) è semplicemente quella di installare strumenti di installazione con:

conda install setuptools

2

Su Windows, con Python 3.7, questo ha funzionato per me:

pip install --upgrade setuptools --user

--user installa i pacchetti nella tua home directory, che non richiede privilegi di amministratore.


2

la semplice soluzione è che puoi usare conda per aggiornare setuptools o l'intero ambiente. (Specialmente per l'utente di Windows.)

conda upgrade -c anaconda setuptools

se il setuptools viene rimosso, è necessario installare nuovamente setuptools.

conda install -c anaconda setuptools

se tutti questi metodi non funzionano, è possibile aggiornare l'ambiente conda. Ma non consiglio di reinstallare e disinstallare alcuni pacchetti perché in seguito aggraverà la situazione.


1

Apparentemente ti mancano gli strumenti di installazione. Alcune versioni di virtualenv usano distribuire invece di setuptools per impostazione predefinita. Utilizzare l' --setuptoolsopzione durante la creazione di virtualenv o impostarla VIRTUALENV_SETUPTOOLS=1nel proprio ambiente.


1

Nel mio caso, inizialmente avevo installato 2 versioni di Python e successivamente avevo eliminato quella precedente. Quindi durante la creazione dell'ambiente virtuale

virtualenv venv

si riferiva al python disinstallato

Cosa ha funzionato per me

python3 -m virtualenv venv

Lo stesso vale quando si tenta di utilizzare pip.


0

Ho trovato questa risposta quando stavo cercando di seguire questa guida per OSX . Ciò che ha funzionato per me è stato, dopo aver corso python get-pip, ho dovuto ANCHE easy_install pip. Ciò ha risolto il problema di non essere in grado di eseguire pip. Ho fatto un sacco di roba vecchia macport installato. Ciò potrebbe essere in conflitto.



0

basta reinstallare il tuo 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

allora andrà tutto bene.


0

Uso CentOS 6.7 e il mio python è stato appena aggiornato dalla 2.6.6 alla 2.7.11, dopo aver provato tante risposte diverse, finalmente la seguente fa il lavoro:

sudo yum install python-devel

Spero di aiutare qualcuno nella stessa situazione.


0

Nessuna delle risposte postate ha funzionato per me, quindi ho reinstallato pip e ha funzionato!

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

sudo easy_install pip 

pip install --upgrade setuptools

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


Traceback (ultima chiamata più recente): file "/ usr / bin / easy_install", riga 5, in <modulo> da pkg_resources import load_entry_point ImportError: nessun modulo chiamato 'pkg_resources'
JDOaktown

owner-Dimension-3000 owner # sudo easy_install pip Traceback (ultima chiamata più recente): File "/ usr / bin / easy_install", linea 5, in <module> da pkg_resources import load_entry_point ImportError: nessun modulo chiamato 'pkg_resources' owner-Dimension -3000 proprietario # pip install - aggiorna setuptools Traceback (ultima chiamata più recente): file "/ usr / bin / pip", linea 5, in <modulo> da pkg_resources import load_entry_point ImportError: nessun modulo chiamato 'pkg_resources' owner-Dimension -3000 proprietario #
JDOaktown l'

hai rimosso per la prima volta la versione pip installata?
user13107,

0

Ho riscontrato questo problema dopo aver aggiornato la mia build di Ubuntu. Sembra che abbia attraversato e rimosso gli strumenti di installazione in tutti i miei ambienti virtuali.

Per rimediare ho reinstallato l'ambiente virtuale nella directory di destinazione. Questo ha ripulito gli strumenti di installazione mancanti e ha fatto funzionare di nuovo le cose.

per esempio:

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir

0

Per me una buona soluzione è stata l'uso --no-downloaddell'opzione virtualenv ( VIRTUALENV_NO_DOWNLOAD=1 toxper tox.)


0

Su Opensuse 42.1 il seguente ha risolto questo problema:

zypper in python-Pygments

0

ImportError: nessun modulo chiamato pkg_resources: la soluzione è reinstallare python pip usando il seguente comando.

Passaggio: 1 Accedi nell'utente root.

sudo su root

Passaggio: 2 Disinstallare il pacchetto python-pip, se esistente.

apt-get purge -y python-pip

Step: 3 Scarica i file utilizzando il comando wget (Scarica file in pwd)

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

Step: 4 Esegui il file Python.

python ./get-pip.py

Passaggio: 5 Eseguire infine il comando di installazione.

apt-get install python-pip

Nota: l' utente deve essere root.


0

Ho riscontrato questo errore nel mio ambiente di Google App Engine. E pip install -t lib setuptoolsrisolto il problema.


0

Se stai usando Python 3, dovresti usare pip3 invece di pip. Il comando sembra$ pip3 install requirements.txt

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.