python-pip: ImportError: não é possível importar o nome principal

1

Eu estou usando o lançamento do Stretch do 9.5 do Debian. Estou tendo erro de importação ao usar pip. Quando tento usar o pip, ele diz:

Noentanto,possousaropython:

Eutenhoduasversõesdopythoninstaladas:2.7e3.5

Saídadequalpip:/usr/bin/pip

Quandoeutenteireinstalá-lousandooapt-getpipfuncionoucompletamentebempelaprimeiravez,masdapróximavezqueelemostraomesmoerro

Conteúdode/usr/bin/

Não sabe qual é o problema.

    
por Siddharth Mishra 04.11.2018 / 03:07

2 respostas

1

Isso provavelmente aconteceu porque você estava usando dois gerenciadores de pacotes diferentes ( dpkg ou seu frontend apt-get e pip em si) no mesmo prefixo ( /usr ). Eu suponho que ou

  • um apt-get upgrade recente atualizando algumas dependências, mas alguns outros arquivos que foram instalados por pip não foram atualizados porque dpkg e apt-get simplesmente não sabiam sobre eles OU
  • você removeu um pacote com apt-get remove e como apt-get não estava ciente de nada usando este pacote (como o outro pacote foi instalado por pip e, portanto, não no banco de dados dpkg ), não avisá-lo sobre a quebra de outros pacotes.

Sem saber quais pacotes foram instalados com qual gerenciador de pacotes, não posso dar nenhum conselho específico sobre como consertar seu sistema, apenas conselhos gerais:

Não use vários gerenciadores de pacotes diferentes. Somente use um gerenciador de pacotes para uma (sub) árvore do seu sistema de arquivos, ou você obterá inconsistências e / ou conflitos. O gerenciador de pacotes do Debian para a árvore /usr é chamado de dpkg e, sem chamá-lo de noone , deve sempre tocar em /usr .

Certamente não ajuda que a maioria das pessoas relacionadas ao Python que você encontrará tentem empurrar o pip, chegando até mesmo a dizer sudo pip install ; não faça Existem pacotes de distribuição contendo material python por um motivo. Veja também esta questão relacionada no AskUbuntu e esta resposta no StackOverflow .

Você pode tentar reparar a bagunça instalando um pip novo com

apt-get purge python-pip python3-pip
apt-get install python-pip python3-pip

no entanto, pode haver arquivos deixados para trás que possam interferir, o que dpkg não sabe como foram instalados por pip . A maneira infalível seria verificar todos os arquivos em /usr/lib/python* se eles pertencem a um pacote debian e, se não, excluí-los sem exceção.

Novamente, somente usa dpkg e suas ferramentas front-end, como apt-get , aptitude , synaptic , ... para modificar /usr . Se você precisar instalar qualquer coisa em todo o sistema que não esteja disponível como .deb package, crie um pacote e instale-o com dpkg ou instale-o em /usr/local .

    
por 04.11.2018 / 06:24
0

Defina python2.7 como padrão:

sudo update-alternatives --config python

selecione python2.7.

Remover pip :

sudo python -m pip uninstall pip
sudo apt purge --autremove python-pip

Reinstale-o:

sudo apt install python-pip

Verifique o pip --version :

pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

Não atualize pip para a versão mais recente.

    
por 04.11.2018 / 10:53