Che cos'è "pkg-resources == 0.0.0" nell'output del comando pip freeze


157

Quando corro pip freezevedo (tra gli altri pacchetti previsti) pkg-resources==0.0.0. Ho visto alcuni post che menzionano questo pacchetto (incluso questo ), ma nessuno spiega cosa sia, o perché sia ​​incluso nell'output di pip freeze. Il motivo principale che mi chiedo è per curiosità, ma in alcuni casi sembra rompere le cose quando si tenta di installare pacchetti con un requirements.txtfile generato con pip freezeche include la pkg-resources==0.0.0linea (ad esempio quando Travis CI tenta di installare dipendenze pipe trova questo linea).

Che cos'è pkg-resourcesed è corretto rimuovere questa riga requirements.txt?

Aggiornare:

Ho scoperto che questa riga sembra esistere solo nell'output di pip freezequando sono in a virtualenv. Non sono ancora sicuro di cosa sia o cosa faccia, ma indagherò ulteriormente sapendo che è probabilmente correlato virtualenv.


"sembra rompere le cose in alcuni casi quando si tenta di installare pacchetti con un file requisito.txt generato con pip freeze che include la riga pkg-resources == 0.0.0." . Puoi forse fare un esempio per questo?
Dimitris Fasarakis Hilliard,

@Jim, buon punto. Ho aggiunto l'esempio in cui mi sono imbattuto.
elethan,

hm, qual è la tua versione di pip? Sto pensando che questo potrebbe essere stato qualcosa che hanno perso in una vecchia versione poiché in 8.1.2non ho alcuna voce pkg-resources. (Che non dovrebbe dal momento che sono abbastanza sicuro che pkg-resourcesarriva setuptools).
Dimitris Fasarakis Hilliard,

1
@Jim è appena venuto in mente che potrebbe essere correlato a virtualenv, e in effetti, quando sono non in un virtualenv non vedo neanche. Questo non spiega ancora di cosa si tratta, ma almeno è un indizio che posso indagare.
elethan,

Risposte:


182

Secondo https://github.com/pypa/pip/issues/4022 , questo è un bug derivante dal fatto che Ubuntu fornisce metadati errati al pip. Quindi, no, non sembra esserci una buona ragione per questo comportamento. Ho presentato un bug di follow-up con Ubuntu. https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

Per eseguire il backup della risposta precedente, dovrebbe essere sicuro rimuovere quella riga dal vostro requisito.txt. Ecco un esempio di stanza per i file Make che congela in modo sicuro l'elenco dei pacchetti (rilascia il Makefile ed eseguilo con make freeze):

freeze:
    pip freeze | grep -v "pkg-resources" > requirements.txt

9
Non è un bug specifico di Ubuntu, debian ha lo stesso problema
medusa il

1
All'inizio l'idea di @MohammedShareefC sembrava funzionare, ma poi ho avuto AttributeError: module 'pkg_resources' has no attribute 'iter_entry_points', quindi penso che sia meglio solo rimuoverlorequirements.txt
arod

2
causa ancora mal di testa quando cerca di schierarsi su Heroku
Martins,

3
Questo sembra ancora un problema con Ubuntu 18.04
Carmine Tambascia,

3
Ancora un problema con Python 3.8 su Ubuntu 19.04
eric.frederich,

13

Per quanto riguarda la parte della tua domanda " va bene rimuovere questa riga? ":

Ho lo stesso problema qui in via di sviluppo su Ubuntu 16.04 con quella stessa linea nei requisiti. Quando si esegue la distribuzione su un debian 8.5 in esecuzione "pip install -r requirements.txt"pip si lamenta che pkg-resources "non viene trovato" ma è installato un pacchetto globale "python-pkg-resources", quindi la dipendenza deve essere soddisfatta. Lo stesso su Ubuntu: il pacchetto esiste anche lì.

Come indicato qui sembra essere un "pacchetto installato implicitamente".

Quindi: se sei su un Debian / Ubuntu con installato python-pkg-resources dovrebbe essere sicuro rimuovere quella linea . L'ho fatto e tutto funziona bene. Tuttavia, poiché non sono un esperto di ciò, è necessario tenere presente che ciò potrebbe comportare complicazioni durante l'implementazione su un altro computer.


Grazie per le informazioni. Ho finito per rimuoverlo anch'io e non ho visto alcuna conseguenza, ma le stesse avvertenze che menzionate si applicano ovviamente. Dove stai installando anche da / a un virtualenv?
elethan,

Sì, ho provato a installare dall'interno di virtualenv. Poiché è presente un pacchetto a livello di sistema e non volevo rovinare tutto, non ho provato a installarlo per pip a livello di sistema.
karlsebal,

1

ho trovato questa risposta in questo link: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

di: Louis Bouchard (louis) ha scritto il 16-11-2019:

Ha funzionato per me. Ma io non sono un esperto, quindi, se qualcuno lo sminuisce meglio, sarebbe fantastico se lo spiegasse.

Ciao,

per quello che vale, il problema deriva dalla versione debianized di virtualenv che utilizza una versione debundled di pkg_resource che viene aggiunta in virtualenv al momento della creazione:

$ virtualenv .
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/caribou/git/quividi/test/bin/python2
Also creating executable in /home/caribou/git/quividi/test/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ pip freeze
pkg-resources==0.0.0

L'utilizzo della versione di virtualenv installata su pip può essere una soluzione alternativa:

$ sudo apt -y purge python3-virtualenv virtualenv tox
$ pip install virtualenv
$ virtualenv .
pip install virtualenv
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/c5/97/00dd42a0fc41e9016b23f07ec7f657f636cb672fad9cf72b80f8f65c6a46/virtualenv-16.7.7-py2.py3-none-any.whl (3.4MB)
    100% |████████████████████████████████| 3.4MB 351kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.7
$ virtualenv .
New python executable in /home/caribou/git/quividi/test/bin/python
Installing setuptools, pip, wheel...
done.
$ source bin/activate
$ pip freeze
$

eh ... Louis


-2

Su Ubuntu, puoi risolvere questo problema rimuovendo il virtualenvpacchetto Ubuntu e installando una nuova versione da pip:

sudo apt remove virtualenv
sudo pip install -U virtualenv
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.