ImportError: não é possível importar o nome main ao executar o comando pip --version no windows7 de 32 bits


145

Instalei o python mais recente (2.7.9) incluído no pip e setuptools para windows de 32 bits. Eu tentei reinstalar o pip, mas o problema persiste.

Aqui está o erro após a execução pip --versionno cmd do administrador:

Traceback (most recent call last):
 File "D:\Python\lib\runpy.py", line 162, in _run_module_as_main
  "__main__", fname, loader, pkg_name)
 File "D:\Python\lib\runpy.py", line 72, in _run_code 
  exec code in run_globals
 File "D:\Python\Scripts\pip.exe\__main__.py", line 5, in <module>
ImportError: cannot import name main

1
Pode estar relacionado à permissão de arquivo. Houve um problema com o python 3.4 aqui que foi resolvido, vale a pena conferir.
Kobi K

Fiz as soluções alternativas usando o comando icacls, mas o erro persiste.
Woootiness

2
"easy_install -U pip" resposta fornecer pelo stackoverflow.com/questions/28031277/... descompactar-url
J1MF0X

Respostas:


172

Embora a pergunta original pareça ser de 2015, esse 'bug' parece afetar os usuários que estão instalando pip-10.0.0também.

A solução alternativa não é modificar pip, mas alterar a maneira como o pip é chamado. Em vez de chamar a /usr/bin/pipchamada pipvia próprio Python. Por exemplo, em vez do abaixo:

pip install <package>

Se a partir do Python versão 2 (ou o binário padrão do Python for chamado python) faça:

python -m pip install <package>

ou se do Python versão 3:

python3 -m pip install <package> 

Sim, não me lembro do que fiz para corrigir isso, mas estou mantendo isso aberto para os outros.
Woootiness

Quando utilizei o comando fornecido, recebi um erro de permissão (que também ocorreu após alterar o pip de acordo com a resposta do catalinpopescu). No entanto, para baixar pacotes para o escopo do usuário (para que você não precise de direitos de administração), use: python3 -m pip install <pacote> --user (funciona para python3, também deve funcionar para python2, embora não tenha sido testado)
randmin

Me ajudou em um Mac.
charles ross

Melhor resposta. Modificar o código fonte é um pântano.
ozgur

Este é realmente um bom caminho a percorrer. Também torna muito fácil obter garantia de que você está usando a versão correta:python2 -m pip install $package
JamesTheAwesomeDude 20/11/19

257

O bug é encontrado no pip 10.0.0.

No linux, você precisa modificar o arquivo: / usr / bin / pip de:

from pip import main
if __name__ == '__main__':
    sys.exit(main())

para isso:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

1
Parece que esta é a solução. Eu tentei isso e não há problema até agora.
Khue

2
Estou usando o pip 10.0.1 e o bug ainda está lá. Sua solução ajudou. Obrigado! Você relatou esse bug e a solução de volta aos desenvolvedores?
Alexey Subach

7
Embora essa solução funcione, evite modificar- pipse. Veja uma solução mais limpa abaixo para ligar pipdo Python.
Wan Bachtiar

1
Não ajuda no "pip 10.0.1". pip --version pip 10.0.1 from /home/x/.local/lib/python2.7/site-packages/pip (python 2.7)sudo pip install tensorflowTraceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main
use

3
@creepy_driver, a modificação manual de um pacote instalado para se adequar ao ambiente não é recomendada porque na próxima atualização para outra versão, ou seja, 10.0.3, é provável que você encontre o mesmo problema. A solução alternativa para rodar pipvia Python instalado apontará o pip para usar o ambiente adequado corretamente.
Wan Bachtiar 10/08/19

60

No Ubuntu Server 16, tenho o mesmo problema com python27. Tente o seguinte:

mudança

from pip import main
if __name__ == '__main__':
    sys.exit(main())

Para

from pip._internal import main
if __name__ == '__main__':
    sys.exit(main())

1
Trabalhou no ubuntu 16.04
Sameera Kumarasingha

Isso não é uma boa ideia. Como mencionado em outra resposta de @RichardElkins: "As pessoas não devem perder tempo editando arquivos instalados que não devem ser modificados após a instalação"
juergi

20

No Windows 10, usei os seguintes comandos para fazer o downgrade do pip:

python -m pip uninstall pip
python -m pip install pip==9.0.3

Isso também deve funcionar no Linux e Mac também.


1
Deve ser python -m pip install pip == 9.0.3
elelias

@elelias Oh, eu não percebi isso. obrigado por me dizer!
Kiyah

1
Eu precisei python easy_install.py pip==9.0.3porque depois da primeira linha, o pip não foi encontrado.
Suzanne

3
Também funciona em Linux e Mac. É uma solução alternativa até que o pip / pip3 10 seja corrigido. As pessoas não devem desperdiçar seu tempo editando arquivos instalados não se destina a ser modificado após a instalação ..
Richard Elkins

Eu tive problemas de caminho após a atualização, fiz o seguinte para fazê-lo funcionar. sudo python -m pip desinstalação pip && sudo apt instalar python-pip --reinstall
webjockey

10

Eu tive o mesmo problema, mas desinstale e reinstale com o apt e o pip não funcionou para mim.

Eu vi outra solução que apresenta uma maneira fácil de recuperar o caminho do pip3:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

1
Eu tive python 2.7, então eu tive que alterar o comando para jogo python 2,7 sudo python -m pip desinstalação pip && sudo apt instalar python-pip --reinstall
webjockey

funciona perfeitamente no Ubuntu, mas eu acho que não vai funcionar no Windows
zaki benz


2

No MacOS, se você instalou o python via Homebrew, altere a linha em /usr/local/opt/python/libexec/bin/pip

de

from pip.internal import main

para

from pip._internal import main

Ou use este liner: sed -i '' "s/from pip import main/from pip._internal import main/" /usr/local/opt/python/libexec/bin/pip

Explicação:

O problema é causado pelas alterações na versão 10 do pip, movendo o namespace interno para baixo main._internale o script bin criado pelo homebrew ainda o procurando do local antigo (onde costumava estar na versão 9). Problema e alguma discussão https://github.com/pypa/pip/issues/5240


1

Se você tiver um hardlink para inserir seu PATH (ou seja, se você possui várias versões python instaladas) e atualiza o pip, também pode encontrar esse erro.

A solução consiste em criar o hardlink novamente. Ou melhor ainda, pare de usar hardlinks e use softlinks.


1
Como consertar isto?
user_x

1

No Windows 10, tive o mesmo problema. PIP 19já estava instalado no meu sistema, mas não estava aparecendo. O erro foi No Module Found.

python -m pip uninstall pip
python -m pip install pip==9.0.3

O downgrade pippara 9.0.3 funcionou bem para mim.



0

Funciona no ubuntu 16.04. Passo 1:

 sudo gedit /home/user_name/.local/bin/pip

um arquivo é aberto com o conteúdo:

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

Mude mainpara para __main__como aparece abaixo:

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import __main__

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(__main__._main())

Salve o arquivo e feche-o. E você está pronto!


0

tente isso

#!/usr/bin/python
# GENERATED BY DEBIAN

import sys

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.i
try:
    from pip import main
except ImportError:
    from pip._internal import main
if __name__ == '__main__':
    sys.exit(main())

0

Uma solução simples que funciona com o Ubuntu, mas também pode corrigir o problema no Windows:

Apenas ligue

pip install --upgrade pip

0

Isso resolveu meu problema no ubuntu 18.04 ao tentar usar python3.6:

rm -rf ~/.local/lib/python3.6

Você pode mover a pasta para outro local usando mv em vez de excluí-la também, para testar:

mv ~/.local/lib/python3.6 ./python3.6_old

0

Abra o seu terminal linux.

hash -d pip

Olá Carlos, bem-vindo ao Stack Overflow. Para ajudar outros usuários que enfrentam esse problema, adicione sua resposta para esclarecer o que esse comando faz e como ele corrige o problema.
CyberJacob

0

No nosso caso, em 2020 usando o Python3, a solução para esse problema foi mover a instalação do Python para o cloud-initscript de inicialização que instanciava a VM.

Tínhamos encontrado esse mesmo erro quando tentamos instalar o Python usando scripts chamados pelos usuários mais tarde no ciclo de vida da VM, mas mover o mesmo código de instalação do Python para o cloud-initscript eliminou esse problema.

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.