pip quebrou. Como corrigir erro de DistributionNotFound?

146

Sempre que tento usar o pip, recebo um erro. Por exemplo:

$ sudo pip install gevent-websocket

Traceback (most recent call last):  
File "/usr/local/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2675, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 552, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==0.8.1

Sinto-me tentado a mudar o valor de para pip == 0.8.2 .. mas não sinto lidar com as conseqüências de 'invadir' minha instalação ... Estou executando o python 2.7 e o pip está na versão 0.8.2.

Stephan
fonte
Muita dor aqui. A solução genérica simples é baixar o pip instalado em: https://bootstrap.pypa.io/get-pip.py e depois executar esse arquivo (usando python). As outras correções são muito dependente do sistema e geralmente confuso e as sugestões abaixo muitas vezes não fazer o trabalho (com base na minha experiência sobre duas crianças diferentes de sistema)
Gregd

Respostas:

253

Acho esse problema no meu MacBook, o motivo é que, como o @Stephan disse, eu uso easy_install para instalar o pip, e a mistura das ferramentas de gerenciamento de pacotes py levou ao pkg_resources.DistributionNotFoundproblema. A resolução é:

easy_install --upgrade pip

Lembre-se: basta usar uma das ferramentas acima para gerenciar seus pacotes Py.

NewPtone
fonte
55
Ha isso só me dá o erro:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm
2
Funciona muito bem no Mac OS X 10.9 também. Obrigado!
quer
2
Você pode achar que: a) você precisa sudo easy_install --upgrade pip eb) então pode obter erros sobre o wheel ao usar o pip. Naquele olhar ponto para isto: stackoverflow.com/questions/20905350/...
mchicago
@PiotrDobrogost Eu meio que discordo - o artigo que você vinculou é sobre o uso do virtualenv, caso contrário, você tem um bilhão de pacotes e o desempenho e conflitos entre aplicativos podem ocorrer - nesse caso, queremos usar o virtualenv. No entanto, para instalar o virtualenv, você deseja instalá-lo globalmente para todos e, portanto, sudo easyinstall. para a instalação virtualenv . que permite que o virtualenv realmente funcione; de ​​que outra forma instale o ambiente virtual sem fazer uma instalação manual (e, portanto, difícil de manter).
Mchicago
1
tenho .. 'sudo easy_install3 --upgrade pip' chegou
pavan
31

Troquei 0.8.1 em 0.8.2 em / usr / local / bin / pip e tudo funcionou novamente.

__requires__ = 'pip==0.8.2'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pip==0.8.2', 'console_scripts', 'pip')()
    )

Eu instalei o pip através do easy_install, o que provavelmente me causou dor de cabeça. Eu acho que é assim que você deve fazer hoje em dia ..

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv
Stephan
fonte
13
Eu sempre tento evitar a instalação de pacotes python puros usando gerenciadores de pacotes do SO - e recomendo que você faça o mesmo. O Ubuntu / Debian quebrou o pacote setuptools e causou algumas dores de cabeça porque as pessoas não podiam desinstalar os pacotes usando o pip (devido a suas alterações).
Hugo Tavares
usar apt ou yum não é suficientemente agnóstico! as estratégias nesta página são adequadas para o desenvolvimento local, mas não faça isso para implantações.
ken
Mesmo aqui, pip em si mortos quando a atualização para 1.3.1 em um Mac, enquanto a própria pip mencionou ainda era 1.2.1 ...
Anthony Liekens
@PiotrDobrogost, veja o comentário acima - é necessário neste caso para fazer com que o virtualenv funcione.
Mchicago
27

Eu tive esse problema quando estava usando o homebrew. Aqui está a solução da edição 26900

python -m pip install --upgrade --force pip
Louis Cremen
fonte
Pode ser útil tentar fazer isso com a opção --user e sem (a última requerendo o sudo).
Ray
11

Tente reinstalar com o script get-pip:

wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

Isso é obtido na página pip do Github e funcionou para mim.

Pavan
fonte
7

Se você estiver no CentOS, verifique se o pacote YUM "python-setuptools" está instalado

yum install python-setuptools

Corrigido para mim.

Dave Lancea
fonte
6

A raiz do problema geralmente são scripts desatualizados no subdiretório bin(Linux) ou Scripts(Windows). Vou explicar isso usando o problema que me encontrei como exemplo.

Eu tinha o virtualenv versão 1.10 instalado nos pacotes de sites do usuário (o fato de ele estar nos pacotes de sites do usuário e não no sytem site-packages é irrelevante aqui)

pdobrogost@host:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
pdobrogost@host:~$ virtualenv --version
1.10

Depois de atualizá-lo para a versão 1.11, recebi o seguinte erro:

pdobrogost@host:~$ virtualenv --version  
Traceback (most recent call last):   
  File "/home/users/pdobrogost/.local/bin/virtualenv", line 5, in <module>
    from pkg_resources import load_entry_point   
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2701, in <module>
    return self.__dep_map   
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 572, in resolve
    if insert: 
pkg_resources.DistributionNotFound: virtualenv==1.10

O arquivo /home/users/pdobrogost/.local/bin/virtualenvmencionado na mensagem de erro ficou assim:

#!/opt/python/2.7.5/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'virtualenv==1.10','console_scripts','virtualenv'
__requires__ = 'virtualenv==1.10'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('virtualenv==1.10', 'console_scripts', 'virtualenv')()
    ) 

Lá, vemos que o virtualenvscript não foi atualizado e ainda requer a versão 1.10 do virtualenv instalada anteriormente.
Agora, reinstalando o virtualenv como este

pdobrogost@host:~$ pip install --user --upgrade virtualenv
Downloading/unpacking virtualenv from https://pypi.python.org/packages/py27/v/virtualenv/virtualenv-1.11.1-py27-none-any.whl#md5=265770b61de41d34d2e9fdfddcdf034c
  Using download cache from /home/users/pdobrogost/.pip_download_cache/https%3A%2F%2Fpypi.python.org%2Fpackages%2Fpy27%2Fv%2Fvirtualenv%2Fvirtualenv-1.11.1-py27-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...

não ajuda (nem pip install --user --upgrade --force-reinstall virtualenv) porque o script /home/users/pdobrogost/.local/bin/virtualenvpermanece inalterado.

A única maneira de corrigir isso foi removendo manualmente os scripts virtualenv * da /home/users/pdobrogost/.local/bin/pasta e instalando o virtualenv novamente. Depois disso, os scripts recém-gerados se referem à versão apropriada do pacote:

pdobrogost@host:~$ virtualenv --version
1.11
Piotr Dobrogost
fonte
6

Consegui resolver isso da seguinte maneira:

$ brew update
$ brew doctor
$ brew uninstall python
$ brew install python --build-from-source    # took ~5 mins
$ python --version                           # => Python 2.7.9
$ pip install --upgrade pip

Estou executando o seguinte material (a partir de 2 de janeiro de 2015):

OS X Yosemite
Version 10.10.1

$ brew -v
Homebrew 0.9.5

$ python --version
Python 2.7.9

$ ipython --version
2.2.0

$ pip --version
pip 6.0.3 from /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-6.0.3-py2.7.egg (python 2.7)

$ which pip
/usr/local/bin/pip
hernamesbarbara
fonte
5

Eu estava enfrentando o problema semelhante no OSx. Meu stacktrace estava dizendo

raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: setuptools>=11.3

Então eu fiz o seguinte

sudo pip install --upgrade setuptools

Isso resolveu o problema para mim. Espero que alguém ache isso útil.

Nabin
fonte
1
Este fixa o meu problema no Windows 10.
Mark Allen
1
Isso corrigiu o problema para nós no CentOS 6. #
Dan Phillimore
2

No Mac OS X (MBP), o seguinte (extraído de outra resposta encontrada aqui) resolveu meus problemas:

C02L257NDV33:~ jjohnson$ brew install pip
Error: No available formula for pip
Homebrew provides pip via: `brew install python`. However you will then
have two Pythons installed on your Mac, so alternatively you can:
    sudo easy_install pip
C02L257NDV33:~ jjohnson$ sudo easy_install pip

Claramente, a causa raiz aqui é ter um método secundário pelo qual instalar o python (no meu caso, Homebrew). Felizmente, as pessoas responsáveis ​​pelo script pip podem solucionar esse problema, uma vez que ainda é relevante 2 anos após ser relatado pela primeira vez no Stack Overflow.

Joe Johnson
fonte
1

Eu tive esse problema porque instalei python / pip com um estranho ~/.pydistutils.cfgque não me lembrava de escrever. Excluído, reinstalado (com pybrew), e estava tudo bem.

polm23
fonte
1

No meu caso (problema do sam, mas outros pacotes), não havia dependência de versão. Uma sequência de desinstalação e instalação do pip ajudou.

rhoerbe
fonte