Wat is “pkg-resources==0.0.0” in de uitvoer van het pip freeze-commando

Als ik pip freezeuitvoer, zie ik (naast andere verwachte pakketten) pkg-resources==0.0.0. Ik heb een paar berichten gezien waarin dit pakket wordt genoemd (inclusief this one), maar geen enkele legt uit wat het is, of waarom het is opgenomen in de uitvoer van pip freeze. De belangrijkste reden waarom ik me afvraag is uit nieuwsgierigheid, maar het lijkt ook dingen te breken in sommige gevallen bij het installeren van pakketten met een requirements.txt-bestand gegenereerd met pip freezedie de regel pkg-resources==0.0.0bevat (bijvoorbeeld wanneer Travis CIprobeert afhankelijkheden te installeren via pipen vindt deze regel).

Wat is pkg-resourcesen mag deze regel worden verwijderd uit requirements.txt?

Bijwerken:

Ik heb ontdekt dat deze regel alleen lijkt te bestaan ​​in de uitvoer van pip freezeals ik me in een virtualenvbevind. Ik weet nog steeds niet zeker wat het is of wat het doet, maar ik zal het verder onderzoeken, wetende dat het waarschijnlijk verband houdt met virtualenv.


Antwoord 1, autoriteit 100%

Volgens https://github.com/pypa/pip/issues/4022is dit een bug als gevolg van het verstrekken van onjuiste metagegevens aan pip door Ubuntu. Dus nee, er lijkt geen goede reden te zijn voor dit gedrag. Ik heb een vervolgfout ingediend bij Ubuntu. https://bugs.launchpad.net/ubuntu/+source/python-pip/+ bug/1635463

Als u een back-up wilt maken van het vorige antwoord, moet het veilig zijn om die regel uit uw requirements.txt te verwijderen. Hier is een voorbeeld van een Make-bestandsstanza die uw pakketlijst veilig bevriest (zet uw Makefile in en voer het uit met make freeze):

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

Antwoord 2, autoriteit 7%

Wat betreft het deel van uw vraag “Is het OK om deze regel te verwijderen?“:

Ik heb hetzelfde probleem dat zich hier ontwikkelt op een ubuntu 16.04 met die regel in de vereisten. Bij implementatie op een debian 8.5 met "pip install -r requirements.txt"klaagt pip dat pkg-resources “niet gevonden” is, maar dat er een globaal pakket is geïnstalleerd “python-pkg-resources”, zodat de afhankelijkheid moet worden bevredigd. Hetzelfde op ubuntu: het pakket bestaat daar ook.

Zoals hierlijkt het om een ​​”impliciet geïnstalleerd pakket” te zijn.

Dus: Als je een Debian/Ubuntu gebruikt waarop python-pkg-resources is geïnstalleerd, zou het veilig moeten zijn om die regel te verwijderen. Dat heb ik gedaan en alles loopt goed. Aangezien ik hier echter geen expert in ben, moet u er rekening mee houden dat dit tot complicaties kan leiden bij implementatie op een andere machine.


Antwoord 3

vond dit antwoord via deze link: https:// bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

door: Louis Bouchard (louis) schreef op 16-11-2019:

Het werkte voor mij. Maar ik ben geen expert, dus als iemand het beter kan begrijpen, zou het geweldig zijn als ik het zou uitleggen.

Hallo,

voor wat het waard is, het probleem komt van de gedebianiseerde versie van virtualenv die een ontbundelde versie van pkg_resource gebruikt die bij het maken aan de virtualenv wordt toegevoegd:

$ 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

Het gebruik van de pip-geïnstalleerde versie van virtualenv kan een werkbare oplossing zijn:

$ 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
$

Other episodes