Sempre que estou tentando instalar qualquer pacote usando o pip, estou recebendo este erro de importação:
guru@guru-notebook:~$ pip3 install numpy
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
guru@guru-notebook:~$ cat `which pip3`
#!/usr/bin/python3
# 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.
from pip import main
if __name__ == '__main__':
sys.exit(main())
Ele estava funcionando bem antes, não sei por que está lançando esse erro. Eu pesquisei sobre esse erro, mas não consigo encontrar nada para corrigi-lo.
Entre em contato se precisar de mais detalhes. Atualizaremos minha pergunta.
pip install --upgrade pip
atualizar o pip em um servidor em que não tenho privilégios de administrador. A desinstalação do pippython -m pip uninstall pip
resolveu meu problema.Respostas:
Você deve ter inadvertidamente atualizado o pip do sistema (provavelmente através de algo como
sudo pip install pip --upgrade
)O pip 10.x ajusta onde seus internos estão localizados. O
pip3
comando que você está vendo é um fornecido pelo mantenedor do pacote (provavelmente o debian baseado aqui?) E não é um arquivo gerenciado pelo pip.Você pode ler mais sobre isso no rastreador de problemas do pip
Você provavelmente não desejará atualizar o pip do sistema e, em vez disso, usar um virtualenv.
Para recuperar o
pip3
binário, você precisarásudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
.Se você quiser continuar em "território não suportado" (atualizando um pacote do sistema fora do gerenciador de pacotes do sistema), provavelmente poderá sair em
python3 -m pip ...
vez depip3
.fonte
sudo apt install python3-pip --reinstall
não corrigiu o problema, no entanto, posso instalar o pacote usandopython3 -m pip
. Obrigado pela ajuda. Estou marcando como aceito.sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
para python2!Podemos limpar o erro modificando o arquivo pip.
Verifique a localização do arquivo:
Vá para esse local ( / usr / bin / pip ) e abra o terminal
Entrar:
$ sudo nano pip
Você pode ver:
Mudar para:
então ctrl + o escreve as alterações e sai
Espero que isso faça !!
fonte
AttributeError: module 'pip.__main__' has no attribute 'main'
pip3
, omain()
é movido parapip._internal
. A declaração de importação devem ser alteradas parafrom pip._internal import main
Para a família Ubuntu, usuários Debian, Linux Mint
Graças à explicação de Anthony acima , você pode manter o pip do sistema original (em / usr / bin / e dist-packages /) e remover o pip instalado manualmente (em ~ / .local /) para resolver o conflito:
$ python3 -m pip uninstall pip
O Ubuntu / Debian pip v8.1.1 (16.04) do
python3-pip
pacote debian (veja$ pip3 -V
) mostra os mesmos resultados de pesquisa que o pip mais recente v10.0.1 e instala os módulos mais recentes do PyPI. Possui umpip
comando de trabalho (já no $ PATH), além da boa--user
opção corrigida desde 2016. Observando as notas de versão do pip , as versões mais recentes são principalmente sobre correções de erros específicas de casos de uso e alguns novos recursos, por isso não todo mundo tem que se apressar em atualizar o pip ainda. E o novo pip 10 pode ser implantado nos virtualenvs do Python, de qualquer maneira.Mas, independentemente de pips, seu sistema operacional permite instalar rapidamente módulos comuns do Python (incluindo numpy) com o APT, sem a necessidade de pip, por exemplo:
$ sudo apt install python3-numpy python3-scipy
(com dependências do sistema)$ sudo apt install python3-pip
(pip com patch do Debian, um pouco mais antigo, mas não importa)Os nomes dos pacotes prefixados
python-
são para Python 2; e prefixados compython3-
são para Python 3 (por exemplo, python3-pandas). Existem milhares e eles passam por testes de integração no Debian e no Ubuntu. A menos que você procure instalar no nível por usuário (pip install --user
opção) ou no virtualenv / venv, o apt pode ser o que você precisa. Esses pacotes de sistema também são acessíveis a partir de envs virtuais, pois o virtualenv volta a usar as libs do sistema na importação se seus envs não fornecerem cópias dos módulos. Seus--user
módulos por usuário instalados sob medida (com pip ) por usuário~/.local/lib
também os substituirão.Observe que, como se trata de uma instalação em todo o sistema , você raramente precisará removê-los (é preciso ter cuidado com as dependências do SO). Isso é conveniente para pacotes com muitas dependências do sistema (como com scipy ou matplotlib), pois o APT acompanhará e fornecerá todas as libs do sistema e extensões C necessárias, enquanto no pip você não tem essas garantias .
De fato, para pacotes Python em todo o sistema (em contraste com o usuário, o nível de diretório inicial ou menos), o Ubuntu espera usar o gerenciador de pacotes APT (em vez de
sudo pip
) para evitar a quebra do SO:sudo pip3
direciona o mesmo/usr/lib/python3/dist-packages
diretório em que o APT armazena o SO módulos sensíveis. As versões recentes do Debian / Ubuntu dependem bastante do Python 3, portanto seus módulos pré-instalados são gerenciadosapt
e não devem ser alterados.Portanto, se você usar o
pip3 install
comando, assegure-se de que ele seja executado em um ambiente de desenvolvimento virtual isolado, como virtualenv (sudo apt install python3-virtualenv
) ou Python3 interno (-m venv
) ou no nível por usuário (--user
opção pip, padrão no Ubuntu) pip desde 2016), mas não em todo o sistema (nuncasudo pip3
!), porque o pip interfere na operação do gerenciador de pacotes APT e pode afetar os componentes do Ubuntu OS quando um módulo python usado pelo sistema é alterado inesperadamente. Boa sorte!P. S. Tudo acima é para a solução 'ideal' (maneira Debian / Ubuntu).
Se você ainda deseja usar o novo pip3 v10 exclusivamente, existem três soluções rápidas:
bash
) - e o pip3 v10 fica disponível (consultepip3 -V
). O pip3 v8 do debian permanece instalado, mas está quebrado; ou$ hash -d pip3 && pip3 -V
para atualizar o nome do caminho pip3 no $ PATH. O pip3 v8 do debian permanece instalado, mas está quebrado; ou$ sudo apt remove python3-pip && hash -d pip3
para desinstalar completamente o pip3 v8 da debian, em favor do seu novo pip3 v10.Nota: Você sempre precisará adicionar
--user
sinalizador a qualquer pip não fornecido pela Debian, a menos que esteja em um virtualenv! (ele implementa pacotes python no~/.local/
padrão em python3-pip e python-pip fornecidos pelo debian / ubuntu desde 2016). Seu uso do pip 10 em todo o sistema, fora do virtualenv, não é realmente suportado pelo Ubuntu / Debian. Nuncasudo pip3
!Mais detalhes:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100
fonte
pip
localmente com--user
, ou sejasudo
, sem , afeta minha capacidade de executar o apt instaladopip
? Eu pensei que os dois coexistissem. Mas como esta essência mostra o apt instalado, uma quebra depois de mimpython3 -m pip install --user --upgrade pip
. Não estou procurando uma solução - estou realmente curioso para entender o que está acontecendo aqui./usr/bin/pip3
em vez da instalada como--user
(~/.local/bin/pip*
) de acordo com o sistema operacional $ PATH do sistema operacional ainda definido para executar o versão do sistema da embalagem, mas não suas bibliotecas ..~/.local/lib/python3.?/site-packages/pip
que tem uma precedência sobre o sistema, como nas importações relativas de Python (o site local do usuário tem prioridade sobre as bibliotecas globais). E como o wrapper antigo tenta, emfrom pip import main
vez defrom pip._internal
ou sua__main__
classe, a versão mais recente do pacote pip, o comando pip do gist falha comImportError: cannot import name 'main'
. Assim, ambos os pips podem coexistir (no disco), mas a funcionalidade do sistema original um será "quebrado" ..--user
.pip install --user
é o que fez isso por mim. (Eu tenho Python 2.7, Python 3.6, e python 3.7, todos instalados no Ubuntu 18.04 LTS.)resolvido em apenas uma etapa.
Eu também enfrentei esse problema, mas isso pode ser resolvido simplesmente por 1 comando, sem se preocupar e perder tempo, e eu tentei em vários sistemas, é a solução mais limpa para esse problema. E isso é:
Para python3: -
sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
.Com isso, você pode simplesmente instalar pacotes usando
pip3
. para verificar o usopip3 --version
.Para versões mais antigas, use:
sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
.Com isso, agora você pode simplesmente instalar pacotes usando
pip
. para verificar o usopip --version
.fonte
Use em
python -m pip install
vez depip install
Exemplo:
O executável
pip
(resp.pip3
) É fornecido pela sua distribuição (python-pip
pacote no Ubuntu 16.04) e localizado em/usr/bin/pip
.Portanto, ele não é atualizado com o
pip
próprio pacote à medida que você atualiza o pip e pode ser interrompido.Se você apenas usar
python -m pip
diretamente, por exemplo, como em:ele percorre o caminho do Python, encontra a versão mais recente do pip e executa esse arquivo.
Ele se baseia no fato de que o arquivo é executável
import
, mas esse é um tipo de interface muito padrão e, portanto, menos provável de quebrar do que o script Debian mais hackier.Então, recomendo adicionar os seguintes aliases ao seu
.bashrc
:O
/usr/bin/pip3
arquivo Ubuntu 18.04 faz:e provavelmente
main
foi removido dopip
algum ponto que foi o que quebrou as coisas.A confirmação do pip de interrupção parece ser: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Mova todas as APIs internas para pip._internal", que foi introduzido no pip 18.0.
Testado no Ubuntu 16.04 após uma atualização de
pip3
9.0.1 para 18.0.pyenv
Por fim, no entanto, para um desenvolvimento sério do Python, eu recomendaria que você instale o seu próprio Python local com pyenv + virtualenv, que também contornaria esse bug do Ubuntu: /ubuntu/682869/how-do-i- Instalar uma versão diferente do python usando o apt-get / 1195153 # 1195153
fonte
Você pode resolver esse problema reinstalando o pip.
Use um dos seguintes comandos de linha de comando para reinstalar o pip:
Python2:
Python3:
fonte
Verifique se o pip foi armazenado em cache em outro caminho. Para isso, chame $ which pip e verifique se o caminho é diferente daquele solicitado no erro, se for o caso:
Quando o cache estiver limpo, o pip estará funcionando novamente. referência: http://cheng.logdown.com/posts/2015/06/06/-usr-bin-pip-no-such-file-or-directory
fonte
Estou executando em um sistema em que tenho o sudo apt, mas não o sudo pip. (E sem acesso su.) Entrei nessa mesma situação seguindo os conselhos do pip:
Nenhuma das outras correções funcionou para mim, porque não tenho privilégios de administrador suficientes. No entanto, algumas coisas ficaram comigo ao ler sobre isso:
Então, achei essa linha de comando para trabalhar para me reverter para onde estava. Se você estava usando uma versão diferente da 8.1.1, obviamente desejará alterar essa parte da linha.
Essa é a única coisa que funcionou para mim, mas funcionou perfeitamente!
fonte
Recuperar com
python3 -m pip install --user pip==9.0.1
(ou a versão que funcionou)fonte
A mesma coisa aconteceu comigo no Pixelbook usando o novo LXC (strech). Essa solução é muito semelhante à aceita, com uma diferença sutil, que fixa o pip3 para mim.
Isso aumentou a versão e agora funciona como esperado.
Encontrei aqui ... Python.org: Verifique se o pip está atualizado
fonte
Encontrei o mesmo problema no meu sistema Ubuntu 16.04. Consegui corrigi-lo reinstalando o pip com o seguinte comando:
curl https://bootstrap.pypa.io/get-pip.py | sudo python3
fonte
Os comandos acima não funcionaram para mim, mas foram muito úteis:
fonte
No ubuntu 18.04.1 Bionic Beaver, você precisa fazer logoff e logon novamente (não é necessário reiniciar) para obter o ambiente adequado.
fonte
Eu uso
sudo apt remove python3-pip
entãopip
funciona.fonte
pip
é para o Python 2. O OP usapip3
, a versão do Python 3 dopip
, que você acabou de remover. Esses dois são distintos e não são intercambiáveis.Para Python versão 2.7, a solução @Anthony funciona perfeitamente, alterando python3 para python da seguinte maneira:
fonte
O que funcionou para eu corrigir o erro com o uso
pip3
foi:sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3
Tudo funciona:
Talvez a nova versão 10.0.1 do pip não atualize o binário em / usr / bin? (o que parece não acontecer)
EDIT: o mesmo problema ocorre no Ubuntu 18.04. A melhor solução que encontrei é vincular os binários do pip de ou
/home/<user/.local/bin
para (dependendo da sua preferência), da seguinte maneira:/usr/local/bin
/usr/bin
NOTA: substitua
<user>
pelo seu usuário em execução atualAs versões associadas (mais recentes) estão em:
Versão 3.6:
/home/demon/.local/lib/python3.6/site-packages/pip (python 3.6)
Versão 2.7:
/home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)
fonte
/usr/bin
. E, vocêPATH
está errado se/usr/local/bin
não estiver antes/usr/bin
./usr/local/bin
. É apenas dentro/home/<user>/.local/bin
e / ou/home/<user>/.local/lib/python<version>/site-packages/pip
nas novas versões (v10.0 + não atualiza a entrada binária/usr/bin
). Portanto, a razão pela qual uma cópia ou link simbólico do binário precisa ser criada no (/usr/bin
ou/usr/local/bin
dependendo da preferência do usuário) para que o pip possa ser executado globalmente na linha de comando.pip
padrões binários da versão mais recente instalada no sistemaTruque e funciona também
fonte
Eu tive esse mesmo erro, mas
python -m pip
ainda estava funcionando, então o corrigi com a opção nuclearsudo python -m pip install --upgrade pip
. Isso fez por mim.fonte
Pelo que vale, tive o problema com
pip
(nãopip2
oupip3
):De alguma forma (não me lembro como) eu tinha coisas python instaladas no meu
~/.local
diretório. Depois que removi o diretório pip de lá,pip
comecei a trabalhar novamente.fonte
Há algo errado com os pacotes, ao gerar o arquivo / usr / bin / pip, você precisa alterar a importação:
para
Isso resolve o problema, não sei por que ele foi gerado, mas há algo na seguinte questão:
Após a atualização do pip 10 no pyenv "ImportError: não é possível importar o nome 'main'"
fonte
Você pode tentar isso:
fonte
Eu também enfrento esse problema quando queria atualizar o sistema
pip
pip3
enfrentei de 9.0.1 para 19.2.3.Após a execução
pip3 install --upgrade pip
, apip
versão se torna 19.2.3. Masmain()
foi movidopip._internal
para a versão mais recente, o que deixapip3
quebrado.Portanto, no arquivo
/usr/bin/pip3
, substitualine 9
:from pip import main
porfrom pip._internal import main
. O problema será corrigido, funciona da mesma maneira parapython2-pip
. (Testado na distribuição Ubuntu 18.04)De acordo com a resposta de @Vincent H.
fonte
Por favor, execute os seguintes comandos para fazer a correção. Após a execução
python3 -m pip install --upgrade pip
, execute o seguinte comando.Fonte: https://github.com/pypa/pip/issues/5221
fonte
você pode simplesmente corrigir os caminhos pip e pip3 usando
update-alternatives
primeira coisa que você deve verificar é a sua
$PATH
corrida atualecho $PATH
e veja é que você pode encontrar/usr/local/bin
onde é onde o pip3 e o pip geralmente estãohá uma alteração que seu sistema está procurando aqui
/bin/pip
e,/bin/pip3
portanto, direi corrigir o CAMINHO adicionando ao seu~/.bash_profile
arquivo para que ele persistaexport PATH=$PATH:/usr/local/bin
e depois verifique se está consertado comwhich pip
ewhich pip3
se não, então use
update-alternatives
para consertar finalmentee se você quiser apontar pip para pip3 então
fonte
Isso funcionou para mim!
Agora, desinstale a versão instalada do pip e reinstale-a usando os seguintes comandos.
Se o pip estiver quebrado, use:
Espero que ajude!
fonte
importar principal do pip._internal
Edite o código pip de
fonte
/usr/bin/pip3
...Como o @cryptoboy disse - verifique qual versão do pip / python você instalou
e verifique as bibliotecas desnecessárias na sua pasta .local / lib /.
Fiz backup das configurações quando estava migrando para o Kubuntu mais recente e tinha a pasta .local / lib / python2.7 / no meu diretório pessoal. Python instalado 3.6. Acabei de remover a pasta antiga e agora tudo funciona muito bem!
fonte
No Debian, você precisará atualizar o apt primeiro ....
Se você pular 'sudo apt-get update -qq', seu pip ficará corrompido e exibirá o erro 'não é possível encontrar o principal'.
fonte
Este erro pode ser uma permissão. Portanto, teste a execução do comando com o sinalizador -H :
fonte
Use o seguinte comando antes da execução de qualquer comando pip
Vai funcionar
fonte