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

1

Estou usando a versão Debian 9.5 Stretch. Estou tendo um erro de importação ao usar o pip. Quando tento usar o pip, ele diz:

insira a descrição da imagem aqui

No entanto, eu posso usar python: insira a descrição da imagem aqui

Eu tenho duas versões do python instaladas: 2.7 e 3.5

Saída cujo pip: /usr/bin/pip

Quando tentei reinstalá-lo usando o apt-get pip funcionou completamente bem pela primeira vez, mas na próxima vez mostra o mesmo erro

Conteúdo de /usr/bin/

insira a descrição da imagem aqui insira a descrição da imagem aqui

Não sei qual é o problema.

Siddharth Mishra
fonte
Adicione a saída de which pipà sua pergunta. Além disso, você instalou o 3.5 via apt-getou foi compilado?
Nasir Riley
i instalou-lo usando o apt-get
Siddharth Mishra
saída do qual pip: / usr / bin / pip #
Siddharth Mishra
Em /usr/bin, há mais de um pythone pipcomo pythone python3e pipe pip3?
Nasir Riley
mesmo erro para pip3
Siddharth Mishra

Respostas:

1

Provavelmente, isso aconteceu porque você estava usando dois gerenciadores de pacotes diferentes ( dpkgou o frontend apt-gete o pippróprio) no mesmo prefixo ( /usr). Eu assumo que

  • uma recente apt-get upgradeatualização algumas dependências, mas alguns outros arquivos que foram instalados por pipnão se atualizado porque dpkge apt-getsimplesmente não sabia sobre eles OR
  • você removeu um pacote e apt-get remove, como apt-getnão estava ciente de nada usando esse pacote (como o outro pacote foi instalado pipe, portanto, não está no dpkgbanco de dados), ele não avisou sobre a quebra de outros pacotes.

Sem saber quais pacotes foram instalados com qual gerenciador de pacotes, não posso dar conselhos realmente específicos sobre como reparar seu sistema, apenas conselhos gerais:

Não use vários gerenciadores de pacotes diferentes. Sempre use apenas um gerenciador de pacotes para uma (sub-) árvore do seu sistema de arquivos, ou você terá inconsistências e / ou conflitos. Gerenciador de pacotes do Debian para a /usrárvore é chamada dpkg, e sem chamá-lo ninguém deve jamais tocar /usr.

Certamente não ajuda que a maioria das pessoas relacionadas a python que você encontra tente forçar o pip, chegando ao ponto de pedir sudo pip install; não. Existem pacotes de distribuição que contêm coisas de python por um motivo. Veja também esta pergunta 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, os quais dpkgnão sabem como foram instalados pip. A maneira infalível seria checar todos os arquivos /usr/lib/python*se eles pertencem a um pacote debian e, se não, excluí-los sem exceção.

Novamente, única utilizar dpkge suas ferramentas de front-end, como apt-get, aptitude, synaptic, ... para modificar /usr. Se você precisar instalar algo em todo o sistema que não esteja disponível como .debpacote, crie um pacote e instale-o dpkgou instale-o em /usr/local.

Wüstengecko
fonte
recebendo erros ao limpar o python-pip. Não é possível copiar todo o registro, é muito longo
Siddharth Mishra
Qual é a primeira mensagem de erro real exibida (com algumas linhas de pré-contexto)? Além disso, tente fazer apt-get purge python-pipe apt-get purge python3-pipseparadamente.
Wüstengecko 4/11
SyntaxError: invalid syntax dpkg: error processing package python-pip (--remove): subprocess installed pre-removal script returned error exit status 1 Traceback (most recent call last): File "/usr/bin/pycompile", line 35, in <module> from debpython.version import SUPPORTED, debsorted, vrepr, \ File "/usr/share/python/debpython/version.py", line 24, in <module> from ConfigParser import SafeConfigParser
Siddharth Mishra
ImportError: No module named 'ConfigParser' dpkg: error while cleaning up: subprocess installed post-installation script returned error exit status 1 Errors were encountered while processing: python-pip E: Sub-process /usr/bin/dpkg returned an error code (1)
Siddharth Mishra
este foi para python-pip
Siddharth Mishra
1

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 --autoremove 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 pippara a versão mais recente.

GAD3R
fonte
não pode usar nenhum desses comandos. cada um deles mostra algum tipo de erro
Siddharth Mishra
O dpkg mostra algum erro sobre a incapacidade de configurar o pip:Do you want to continue? [Y/n] y (Reading database ... 334637 files and directories currently installed.) Removing python-pip (9.0.1-2) ... File "/usr/bin/pyclean", line 63 except (IOError, OSError), e: ^ SyntaxError: invalid syntax dpkg: error processing package python-pip (--remove): subprocess installed pre-removal script returned error exit status 1
Siddharth Mishra 5/18
a remoção também mostra o erro:dpkg: error while cleaning up: subprocess installed post-installation script returned error exit status 1 Errors were encountered while processing: python-pip E: Sub-process /usr/bin/dpkg returned an error code (1)
Siddharth Mishra 5/18
@SiddharthMishra Você recebe o erro acima porque configurou o Python3.5 como padrão, veja a minha atualização.
GAD3R
1
@ GAD3R há um erro de digitação aqui. Deve ser "sudo apt purge --autoremove python-pip"
Alex Jansen