¿Qué es "pkg-resources == 0.0.0" en la salida del comando pip freeze

157

Cuando corro pip freezeveo (entre otros paquetes esperados) pkg-resources==0.0.0. He visto algunas publicaciones que mencionan este paquete (incluido este ), pero ninguno explica qué es o por qué está incluido en la salida de pip freeze. La razón principal por la que me pregunto es por curiosidad, pero también parece que rompe cosas en algunos casos cuando intento instalar paquetes con un requirements.txtarchivo generado pip freezeque incluye la pkg-resources==0.0.0línea (por ejemplo, cuando Travis CI intenta instalar dependencias pipy encuentra esto) línea).

¿Qué es pkg-resources, y está bien eliminar esta línea requirements.txt?

Actualizar:

He descubierto que esta línea solo parece existir en la salida de pip freezecuando estoy en a virtualenv. Todavía no estoy seguro de qué es o qué hace, pero investigaré más a fondo sabiendo que es probable que esté relacionado virtualenv.

elethan
fuente
"Parece que en algunos casos se rompen las cosas cuando se intenta instalar paquetes con un archivo require.txt generado con pip freeze que incluye la línea pkg-resources == 0.0.0". . ¿Puedes dar un ejemplo para eso?
Dimitris Fasarakis Hilliard
@ Jim, buen punto. Agregué el ejemplo con el que me encontré.
Elethan
hm, ¿cuál es tu versión de pip? Estoy pensando que esto podría haber sido algo que se perdieron en una versión anterior, ya 8.1.2que no tengo entrada pkg-resources. (Lo cual no debe ya estoy bastante seguro pkg-resourcesviene con setuptools).
Dimitris Fasarakis Hilliard
1
@Jim se me acaba de ocurrir que puede estar relacionado con virtualenv, y de hecho, cuando estoy no en un virtualenv Yo no lo veo bien. Esto todavía no explica qué es, pero al menos es una pista que puedo investigar.
Elethan

Respuestas:

181

De acuerdo con https://github.com/pypa/pip/issues/4022 , este es un error que resulta de que Ubuntu proporcione metadatos incorrectos a pip. Entonces, no, no parece haber una buena razón para este comportamiento. Archivé un error de seguimiento con Ubuntu. https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

Para hacer una copia de seguridad de la respuesta anterior, debería ser seguro eliminar esa línea de tus required.txt. Aquí hay un ejemplo de Crear archivo stanza que congela de forma segura su lista de paquetes (suelte su Makefile y ejecute con make freeze):

freeze:
    pip freeze | grep -v "pkg-resources" > requirements.txt
Craig Wright
fuente
9
No es un error específico de Ubuntu, debian tiene el mismo problema
medusa
1
En un primer momento la idea @MohammedShareefC parecía funcionar, pero luego llegué AttributeError: module 'pkg_resources' has no attribute 'iter_entry_points', así que piensa que es mejor sólo para sacarlo derequirements.txt
arod
2
sigue causando dolor de cabeza al intentar desplegarse en heroku
Martins
3
Esto todavía parece un problema con ubuntu 18.04
Carmine Tambascia
3
Sigue siendo un problema con Python 3.8 en Ubuntu 19.04
eric.frederich
13

En cuanto a la parte de su pregunta "¿ está bien eliminar esta línea? ":

Tengo el mismo problema aquí desarrollando en ubuntu 16.04 con esa misma línea en los requisitos. Cuando se despliega en un Debian 8.5 en ejecución, "pip install -r requirements.txt"pip se queja de que pkg-resources "no se encuentra" pero hay un paquete global instalado "python-pkg-resources" por lo que la dependencia debe ser satisfecha. Lo mismo en ubuntu: el paquete también existe allí.

Como se indica aquí , parece ser un "paquete instalado implícitamente".

Entonces: Si está en un Debian / Ubuntu con python-pkg-resources instalado, debería ser seguro eliminar esa línea . Lo hice y todo está funcionando bien. Sin embargo, dado que no soy un experto en esto, debe tener en cuenta que esto podría generar complicaciones al implementarlo en otra máquina.

karlsebal
fuente
Gracias por la info. Terminé eliminándolo también y tampoco he visto ninguna consecuencia, pero las mismas advertencias que mencionas se aplican, por supuesto. ¿Dónde está instalando a / desde a virtualenvtambién?
Elethan
Sí, intenté instalar desde dentro un virtualenv. Como el paquete de todo el sistema está presente y no quería estropear las cosas, no intenté instalarlo por pip en todo el sistema.
karlsebal
1

Encontré esta respuesta en este enlace: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

por: Louis Bouchard (louis) escribió el 16/11/2019:

Funcionó para mi. Pero no soy un experto, por lo que si alguien lo entiende mejor, sería genial si se lo explicara.

Hola,

por lo que vale, el problema proviene de la versión debianizada de virtualenv que usa una versión desagregada de pkg_resource que se agrega a virtualenv en el momento de la creación:

$ 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

Usar la versión de virtualenv instalada por pip puede ser una solución viable:

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

hth, ... Louis

panxogol
fuente
-2

En Ubuntu, puede solucionar esto eliminando el virtualenvpaquete de Ubuntu e instalando una nueva versión de pip:

sudo apt remove virtualenv
sudo pip install -U virtualenv
ahmed
fuente