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?

igniteflow
fonte
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.

cwc
fonte
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

Marek
fonte
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.

Ali Akdurak
fonte
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
carrinho de bebê
fonte
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
Paulo
fonte
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

ajtrichards
fonte
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!

ptim
fonte
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
Tarion
fonte
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

mrgnw
fonte
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.

jdg
fonte
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!

Martijn de Milliano
fonte
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.

arno_v
fonte
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
Shadyhill
fonte
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/
kat
fonte
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
Gabriel
fonte
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.

David Jablonski
fonte
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.

weibin Wang
fonte
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.

Danilo Bargen
fonte
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.

Afsan Abdulali Gujarati
fonte
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.

KitsuneYMG
fonte
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.

Scott Yang
fonte
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.

shellbye
fonte
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/ )

user13107
fonte
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
Steve D.
fonte
0

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

Baczek
fonte
0

No Opensuse 42.1, o seguinte problema foi corrigido:

zypper in python-Pygments
David Hamner
fonte
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.

Tukadiya Ramesh
fonte
0

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

Murat Çorlu
fonte
0

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

user3266968
fonte