web-dev-qa-db-fra.com

Qu'est-ce que "pkg-resources == 0.0.0" en sortie de la commande pip freeze

Lorsque je lance pip freeze, je vois (parmi les autres packages attendus) pkg-resources==0.0.0. J'ai vu quelques articles mentionnant ce paquetage (y compris celui-ci ), mais aucun n'expliquant de quoi il s'agit ni pourquoi il est inclus dans le résultat de pip freeze. La raison principale pour laquelle je me pose des questions est par curiosité, mais aussi, dans certains cas, il semble que des tentatives d’installation de paquets contenant un fichier requirements.txt généré avec pip freeze et incluant la ligne pkg-resources==0.0.0 (par exemple lorsque Travis CI essaye) soient tentées. installer des dépendances via pip et trouve cette ligne).

Qu'est-ce que pkg-resources et puis-je supprimer cette ligne de requirements.txt?

Mettre à jour:

J'ai constaté que cette ligne ne semble exister que dans la sortie de pip freeze lorsque je suis dans une virtualenv. Je ne suis toujours pas sûr de ce que c'est ou de ce qu'il fait, mais je vais mener une enquête plus approfondie en sachant qu'il est probablement lié à virtualenv.

76
elethan

Selon https://github.com/pypa/pip/issues/4022 , il s'agit d'un bogue résultant du fait qu'Ubuntu a fourni des métadonnées incorrectes à pip. Donc, non, il ne semble pas y avoir de bonne raison pour ce comportement. J'ai déposé un bug de suivi avec Ubuntu. https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

Pour sauvegarder la réponse précédente, vous devriez pouvoir supprimer cette ligne du fichier Requirements.txt. Voici un exemple de strophe Make de fichier qui gèle votre liste de paquets en toute sécurité (déposez votre Makefile et exécutez-le avec make freeze):

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

En ce qui concerne la partie de votre question "est-il possible de supprimer cette ligne?":

J'ai le même problème ici en développement sur un Ubuntu 16.04 avec cette ligne même dans les exigences. Lors du déploiement sur une Debian 8.5 exécutant "pip install -r requirements.txt" pip, il se plaint que pkg-resources est "introuvable" mais qu'un paquet global est installé "python-pkg-resources", de sorte que la dépendance doit être satisfaite. Idem sur Ubuntu: Le paquet existe aussi.

Comme indiqué ici il semble y avoir un "paquet implicitement installé". 

Donc: Si vous êtes sur une Debian/Ubuntu ayant python-pkg-resources installé, il devrait être sûr de supprimer cette ligne. Je l'ai fait et tout fonctionne bien. Cependant, étant donné que je ne suis pas un expert en la matière, vous devez garder à l’esprit que cela peut entraîner des complications lors du déploiement sur un autre ordinateur.

8
karlsebal

Sur Ubuntu, vous pouvez résoudre ce problème en supprimant le paquet Ubuntu virtualenv et en installant la nouvelle version à partir de pip:

Sudo apt remove virtualenv
Sudo pip install -U virtualenv
0
ahmed