Nenhum módulo chamado pkg_resources


452

Estou implantando um aplicativo Django em um servidor dev e estou atingindo este erro quando executo pip install -r requirements.txt:

Traceback (most recent call last):
  File "/var/www/mydir/virtualenvs/dev/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

pkg_resourcesparece ser distribuído com setuptools. Inicialmente, pensei que isso não pudesse ser instalado no Python no virtualenv, por isso instalei setuptools 2.6(a mesma versão do Python) nos pacotes de sites do Python no virtualenv com o seguinte comando:

sh setuptools-0.6c11-py2.6.egg --install-dir /var/www/mydir/virtualenvs/dev/lib/python2.6/site-packages

EDIT: Isso só acontece dentro do virtualenv. Se eu abrir um console fora do virtualenv, ele pkg_resourcesestará presente, mas ainda estou recebendo o mesmo erro.

Alguma idéia de por que pkg_resourcesnão está no caminho?


Ao instalar nltk, mesma pergunta problema happens.Good e resposta útil
laike9m

4
pip uninstall -y setuptoolse depois pip install setuptools==39.1.0trabalhou para mim em Anaconda no Windows 10.
Ryan

1
O @Ryan também trabalhou para mim no Ubuntu 16.04, obrigado, senhor!
ElectRocnic

Respostas:


634

Atualização de julho de 2018

A maioria das pessoas agora deve usar pip install setuptools(possivelmente com sudo).

Alguns podem precisar de (re) instalar o python-setuptoolspacote através do seu gerenciador de pacotes ( apt-get install, yum install, etc.).

Esse problema pode ser altamente dependente do seu sistema operacional e do ambiente de desenvolvimento. Veja as respostas herdadas / outras abaixo, se as opções acima não estiverem funcionando para você.

Explicação

Essa mensagem de erro é causada por um setuptoolspacote Python ausente / quebrado . De acordo com o comentário de Matt M. e o setuptools # 581 , o script de autoinicialização mencionado abaixo não é mais o método de instalação recomendado.

As instruções do script de inicialização permanecerão abaixo, caso ainda seja útil para qualquer pessoa.

Resposta herdada

Encontrei o mesmo ImportErrorhoje ao tentar usar o pip. De alguma forma, o setuptoolspacote foi excluído no meu ambiente Python.

Para corrigir o problema, execute o script de instalação para setuptools:

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

(ou se você não tiver wgetinstalado (por exemplo, OS X), tente

curl https://bootstrap.pypa.io/ez_setup.py | python

possivelmente com sudoanexado.)

Se você tiver alguma versão distributeou setuptoolsmenos de 0,6, será necessário desinstalá-la primeiro. *

Consulte as Instruções de instalação para obter mais detalhes.


* Se você já tem um trabalho distribute, setuptoolsé mais fácil atualizá-lo para o "wrapper de compatibilidade" que você alterna . Mas se as coisas já estiverem quebradas, não tente isso.


42
A curvatura da tubulação para um comando local sempre me assusta, mas isso funciona muito bem. :) Eu corri sudo pythonembora YMMV.
quer

4
No Cygwin, eu tive que instalar o pacote python-setuptools . Isso fez com que o easy_install funcionasse novamente, que havia sofrido o mesmo problema. Então eu costumava easy_install pipfazer o pip trabalhar novamente. Meu problema surgiu com o Cygwin atualizando o Python de 2.6 para 2.7 nas minhas costas enquanto instalava algo não relacionado.
precisa

5
Esta foi a melhor resposta no ano passado ... mas em meados de 2013, distributeé obsoleta e setuptoolsé sua sucessora. Editarei a resposta para atualizá-la, mas não tenho certeza de que é a melhor maneira de lidar com isso, para que alguém possa reverter a edição, nesse caso: Vá aqui .
abarnert

1
Este URL não funcionou para mim, mas este fez: peak.telecommunity.com/dist/ez_setup.py
ajtrichards

1
@ Cerin: Seria mais útil para todos se você disser o que aconteceu quando tentou. E você usou sudo, como @Nik observou acima?
precisa saber é o seguinte

124
sudo apt-get install --reinstall python-pkg-resources

consertou para mim no Debian. Parece que desinstalar alguns pacotes .deb (conjunto distorcido no meu caso) quebrou o caminho que o python usa para encontrar pacotes


9
Estou usando o Python 3, então tive que executar o sudo apt-get install --reinstall python3-pkg-resources e isso foi corrigido. Obrigado!
precisa

não ajuda com yapf eu acho, algo a ver com python3 / python2
don brilhante

53

Eu vi esse erro ao tentar instalar o rhodecode em um virtualenv no ubuntu 13.10. Para mim, a solução era correr

pip install --upgrade setuptools
pip install --upgrade distribute 

antes de executar o easy_install rhodecode.


12
pip install --upgrade setuptoolssozinho fez o truque para mim.
Ryan Tuck

Eu precisavapip install --upgrade setuptools --user
dfrankow

5
Não consigo executar pip install --upgrade setuptoolsdevido ao mesmo erro:No module named pkg_resources
McLawrence 28/04

1
pip install --upgrade distributefez o trabalho ao usar o módulo venv do Python 3. O --distributesinalizador suportado pelo virtualenv do Python 2 , mas é necessário instalar distributenos ambientes criados por venv.
Nirmal

34

Também aconteceu comigo. Acho que o problema ocorrerá se o requirements.txt contiver uma entrada "distribuir" enquanto o virtualenv usar setuptools. O Pip tentará corrigir as ferramentas de configuração para liberar espaço para distribuição, mas infelizmente falhará no meio do caminho.

A solução mais fácil é excluir o virtualenv atual e criar um novo virtualenv com o argumento --distribute.

Um exemplo se estiver usando virtualenvwrapper:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt

2
isso me ajudou quando nenhuma das outras soluções fez (usando Ubuntu 16.04)
mikee

Para ambientes criados pelo módulo venv do Python 3, a execução pip install -U distributeapós a ativação do ambiente fará o trabalho.
Nirmal #

17

No CentOS 6, a instalação do pacote python-setuptools o corrigiu.

yum install python-setuptools

Isso funciona no Debian se quando você substituir "yum" por "sudo apt-get". Também: sudo apt-get install python3-setuptools
gridtrak

Este é o único que fez isso por mim.
Tao Starbow

Eu tive esse problema no CentOS 7 e o python-setuptools já estava instalado, mas o sudo yum reinstall python-setuptoolscorrigiu.
coneslayer

O bug foi reportado para o CentOS.org bugs.centos.org/view.php?id=14042
rjt

14

Eu tive esse erro anteriormente e a resposta com a classificação mais alta deu-me um erro ao tentar baixar o ez_setup.pyarquivo. Encontrei outra fonte para que você possa executar o comando:

curl http://peak.telecommunity.com/dist/ez_setup.py | python

Descobri que eu também precisava usá sudo-lo para fazê-lo funcionar, então você pode precisar executar:

sudo curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python

Também criei outro local no qual o script pode ser baixado:

https://gist.github.com/ajtrichards/42e73562a89edb1039f3


O comando "onda" não seria necessário o sudo, assim que poderia ser:curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
tombrown52

1
esta resposta me salvou com a adição "| sudo python", porque "| python" por si só não funcionou! Obrigado
patti_jane

14

Depois de tentar várias dessas respostas e entrar em contato com um colega, o que funcionou para mim no Ubuntu 16.04 foi:

pip install --force-reinstall -U setuptools
pip install --force-reinstall -U pip

No meu caso, era apenas uma versão antiga do travesseiro 3.1.1 que estava tendo problemas (o travesseiro 4.x funcionava bem) e agora está resolvido!


8

Precisava de um pouco mais de sudo. Em seguida, usei o easy_install para instalar o pip. Trabalho.

sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
sudo easy_install pip

1
sudonão deve ser exigido em um virtualenv
igniteflow

É verdade que só tive o mesmo problema sem um virtualenv.
Tarion

5

Corrigi o erro com o virtualenv, fazendo o seguinte:

Copiou pkg_resources.py de

/Library/Python/2.7/site-packages/setuptools

para

/Library/Python/2.7/site-packages/

Esta pode ser uma solução barata, mas funcionou para mim.

.

Se as ferramentas de configuração não existirem, tente instalar os pacotes do site do sistema digitando virtualenv --system-site-packages /DESTINATION DIRECTORY, alterando a última parte para o diretório em que você deseja instalar. pkg_rousources.pyestará nesse diretório em lib / python2.7 / site-packages


Sim, em alguns projectos, esta solução é melhor (para mim)
nguyên

3

Para mim, esse erro estava sendo causado porque eu tinha um subdiretório chamado "site"! Não sei se é um bug ou não, mas comecei com:

/some/dir/requirements.txt / some / dir / site /

O pip install -r requirements.txt não funcionaria, fornecendo-me o erro acima!

renomear a subpasta de "site" para "src" corrigiu o problema! Talvez o pip esteja procurando "pacotes de sites"? Louco.


2

Eu tive esse problema ao ativar meu virtualenv como um usuário diferente daquele que o criou. Parece ser um problema de permissão. Descobri isso quando tentei a resposta por @cwc e vi isso na saída:

Installing easy_install script to /path/env/bin
error: /path/env/bin/easy_install: Permission denied

Voltando ao usuário que criou o virtualenv, a execução do pip installcomando original ocorreu sem problemas. Espero que isto ajude!


2

Eu também tive esse problema hoje. Eu só tenho o problema dentro do ambiente virtual.

A solução para mim foi desativar o ambiente virtual, excluir e desinstalar o virtualenv com pip e reinstalá-lo. Depois disso, criei um novo ambiente virtual para o meu projeto e o pip funcionou bem tanto dentro do ambiente virtual quanto no ambiente normal.


2

Parece que eles se afastaram do bitbucket e agora estão no github ( https://github.com/pypa/setuptools )

O comando a ser executado é:

wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python

O arquivo "/python/Python-3.5.1/Lib/urllib/request.py", linha 162, em urlopen retorna opener.open (url, dados, tempo limite) Arquivo "/python/Python-3.5.1/Lib/urllib /request.py ", linha 465, no arquivo aberto" /python/Python-3.5.1/Lib/urllib/request.py ", linha 488, em _open 'unknown_open', req) Arquivo" /python/Python-3.5 .1 / Lib / urllib / request.py ", linha 443, em _call_chain result = func (* args) Arquivo" /python/Python-3.5.1/Lib/urllib/request.py ", linha 1310, em unknown_open raise URLError ('tipo de URL desconhecido:% s'% type) urllib.error.URLError: <erro de urlopen tipo de URL desconhecido: https>
JDOaktown

2

Para mim, acabou por ser um problema de permissões site-packages. Como é apenas meu ambiente de desenvolvimento, aumentei as permissões e tudo está funcionando novamente:

sudo chmod -R a+rwx /path/to/my/venv/lib/python2.7/site-packages/

2

Se você estiver enfrentando esse problema com um aplicativo instalado via conda , a solução (conforme declarada neste relatório de bug) é simplesmente instalar ferramentas de instalação com:

conda install setuptools

2

No Windows, com python 3.7, isso funcionou para mim:

pip install --upgrade setuptools --user

--user instala pacotes no diretório inicial, o que não requer privilégios de administrador.


2

a solução simples é que você pode usar o conda para atualizar as ferramentas de instalação ou todo o ambiente. (Especialmente para usuários do Windows.)

conda upgrade -c anaconda setuptools

se o setuptools for removido, você precisará instalar o setuptools novamente.

conda install -c anaconda setuptools

se todos esses métodos não funcionarem, você poderá atualizar o ambiente conda. Mas eu não recomendo que você precise reinstalar e desinstalar alguns pacotes, pois depois disso isso agravará a situação.


1

Aparentemente, você está perdendo as ferramentas de configuração. Algumas versões de virtualenv usam distribuir em vez de setuptools por padrão. Use a --setuptoolsopção ao criar a virtualenv ou configure-a VIRTUALENV_SETUPTOOLS=1em seu ambiente.


1

No meu caso, eu tinha duas versões python instaladas inicialmente e depois excluía a versão anterior. Então, ao criar o ambiente virtual

virtualenv venv

estava se referindo ao python desinstalado

O que funcionou para mim

python3 -m virtualenv venv

O mesmo acontece quando você está tentando usar o pip.


0

Me deparei com esta resposta quando estava tentando seguir este guia para OSX . O que funcionou para mim foi que, depois de correr python get-pip, tive que TAMBÉM easy_install pip. Isso resolveu o problema de não conseguir executar o pip. Eu tinha um monte de coisas antigas do macport instaladas. Isso pode ter entrado em conflito.



0

basta reinstalar o seu setuptools:

$ sudo wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefefe74e
$ tar -zxvf setuptools-0.6c11.tar.gz
$ cd setuptools-0.6c11/
$ sudo python setup.py build
$ sudo python setup.py install
$ sudo pip install --upgrade setuptools

então tudo ficará bem.


0

Eu uso o CentOS 6.7, e meu python acabou de atualizar do 2.6.6 para o 2.7.11, depois de tentar tantas respostas diferentes, finalmente o seguinte faz o trabalho:

sudo yum install python-devel

Espero ajudar alguém na mesma situação.


0

Nenhuma das respostas postadas funcionou para mim, então eu reinstalei o pip e funcionou!

sudo apt-get install python-setuptools python-dev build-essential 

sudo easy_install pip 

pip install --upgrade setuptools

(referência: http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/ )


Traceback (chamada mais recente passada): File "/ usr / bin / easy_install", linha 5, em <module> do pkg_resources importar ImportError load_entry_point: No módulo chamado 'pkg_resources'
JDOaktown

owner-Dimension-3000 owner # sudo easy_install pip Traceback (última chamada mais recente): Arquivo "/ usr / bin / easy_install", linha 5, em <module> de pkg_resources import load_entry_point ImportError: Nenhum módulo chamado 'pkg_resources' owner-Dimension -3000 owner # pip install --upgrade setuptools Traceback (última chamada mais recente): Arquivo "/ usr / bin / pip", linha 5, no <module> de pkg_resources import load_entry_point ImportError: Nenhum módulo chamado 'pkg_resources' owner-Dimension -3000 proprietário #
JDOaktown

você removeu a versão do pip instalada?
user13107

0

Corri para esse problema depois de atualizar minha compilação Ubuntu. Parece ter passado e removido as ferramentas de configuração em todos os meus ambientes virtuais.

Para remediar isso, reinstalei o ambiente virtual novamente no diretório de destino. Isso limpava as ferramentas de configuração ausentes e fazia as coisas funcionarem novamente.

por exemplo:

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir

0

Para mim, uma boa solução era usar a --no-downloadopção para virtualenv ( VIRTUALENV_NO_DOWNLOAD=1 toxpara tox.)


0

No Opensuse 42.1, o seguinte problema foi corrigido:

zypper in python-Pygments

0

ImportError: nenhum módulo chamado pkg_resources: a solução é reinstalar o python pip usando o seguinte comando:

Etapa: 1 Faça o login no usuário root.

sudo su root

Etapa: 2 Desinstale o pacote python-pip, se existente.

apt-get purge -y python-pip

Etapa: 3 Baixar arquivos usando o comando wget (download de arquivo pwd)

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

Etapa: 4 Execute o arquivo python.

python ./get-pip.py

Etapa: 5 Finalmente, execute o comando de instalação.

apt-get install python-pip

Nota: O usuário deve ser root.


0

Tive esse erro no meu ambiente do Google App Engine. E pip install -t lib setuptoolscorrigiu o problema.


0

Se você estiver usando Python 3, use pip3 em vez de pip. O comando parece$ pip3 install requirements.txt

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.