O que é "pkg-resources == 0.0.0" na saída do comando pip freeze


157

Quando executo pip freeze, vejo (entre outros pacotes esperados) pkg-resources==0.0.0. Eu vi alguns posts mencionando este pacote (incluindo este ), mas nenhum explicando o que é ou por que está incluído na saída do pip freeze. A principal razão pela qual estou me perguntando é por curiosidade, mas também parece quebrar algumas coisas em alguns casos ao tentar instalar pacotes com um requirements.txtarquivo gerado pip freezeque inclui a pkg-resources==0.0.0linha (por exemplo, quando o Travis CI tenta instalar dependências pipe descobre isso linha).

O que é pkg-resourcese é correto remover esta linha requirements.txt?

Atualizar:

Eu descobri que essa linha parece existir apenas na saída de pip freezequando estou em a virtualenv. Ainda não tenho certeza do que é ou do que faz, mas vou investigar melhor sabendo que provavelmente está relacionado virtualenv.


"parece quebrar as coisas em alguns casos ao tentar instalar pacotes com um arquivo requirements.txt gerado com o pip freeze que inclui a linha pkg-resources == 0.0.0." . Você pode dar um exemplo disso?
Dimitris Fasarakis Hilliard 19/09/16

@ Jim, bom ponto. Adicionei o exemplo que encontrei.
elethan 19/09/16

hm, qual é a sua versão pip? Eu estou pensando que isso pode ter sido algo que eles perderam em um lançamento antigo, já que 8.1.2eu não tenho entrada pkg-resources. (O que não deveria, pois tenho certeza que pkg-resourcesvem com isso setuptools).
Dimitris Fasarakis Hilliard 19/09/16

1
@ Jim ele só me ocorreu que isso pode estar relacionado com virtualenv, e na verdade, quando eu sou não em um virtualenv eu não vê-lo também. Isso ainda não explica o que é, mas pelo menos é uma pista que posso investigar.
elethan 19/09/16

Respostas:


181

De acordo com https://github.com/pypa/pip/issues/4022 , este é um bug resultante do Ubuntu fornecendo metadados incorretos para o pip. Portanto, não, parece não haver uma boa razão para esse comportamento. Eu registrei um bug de acompanhamento no Ubuntu. https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

Para fazer backup da resposta anterior, deve ser seguro remover essa linha do seu requirements.txt. Aqui está um exemplo de estrofe de arquivo Make que congela com segurança sua lista de pacotes (solte em seu Makefile e execute com make freeze):

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

9
Não é bug Ubuntu específicos de, debian tem mesmo problema
água-viva

1
Na primeira ideia @MohammedShareefC parecia trabalho, mas então eu tenho AttributeError: module 'pkg_resources' has no attribute 'iter_entry_points', então eu acha que é melhor apenas para removê-lorequirements.txt
arod

2
ainda causando dor de cabeça ao tentar implantar a heroku
Martins

3
Isso ainda parece um problema com o Ubuntu 18.04
Carmine Tambascia

3
Ainda há um problema com o Python 3.8 no Ubuntu 19.04
eric.frederich

13

Quanto à parte da sua pergunta " está correto remover esta linha? ":

Eu tenho o mesmo problema aqui desenvolvendo em um ubuntu 16.04 com essa mesma linha nos requisitos. Ao implantar em um debian 8.5 em execução"pip install -r requirements.txt" pip reclama que pkg-resources "não foi encontrado", mas existe um pacote global instalado "python-pkg-resources", portanto a dependência deve ser satisfeita. O mesmo no ubuntu: o pacote também existe lá.

Como declarado aqui , parece haver algum "pacote instalado implicitamente".

Então: Se você estiver em um Debian / Ubuntu com o python-pkg-resources instalado, deve ser seguro remover essa linha . Eu fiz isso e tudo está indo bem. No entanto, como eu não sou especialista nisso, lembre-se de que isso pode levar a complicações ao implantar em outra máquina.


Obrigado pela informação. Acabei removendo-o também e também não vi nenhuma consequência, mas as mesmas ressalvas que você menciona se aplicam, é claro. Onde você está instalando para / de um virtualenvtambém?
elethan

Sim, tentei instalar de dentro de um virtualenv. Como o pacote em todo o sistema está presente e eu não queria estragar tudo, não tentei instalar por pip em todo o sistema.
karlsebal

1

encontrou esta resposta neste link: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1635463

por: Louis Bouchard (louis) escreveu em 2019-11-16:

Funcionou para mim. Mas eu não sou um especialista, portanto, se alguém o disser melhor, seria ótimo se explicasse.

Olá,

pelo que vale a pena, o problema vem da versão debianizada do virtualenv, que usa uma versão desmembrada do pkg_resource, que é adicionada ao virtualenv no momento da criação:

$ 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

O uso da versão instalada do virtualenv do pip pode ser uma solução viável:

$ 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


-2

No Ubuntu, você pode corrigir isso removendo o virtualenvpacote Ubuntu e instalando uma nova versão em pip:

sudo apt remove virtualenv
sudo pip install -U virtualenv
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.