Executando Pip3 ImportError: não é possível importar o nome 'main'

14

Eu quero instalar o Scipy (já tenho o Numpy instalado). Eu tenho o Python 3.5.1-3 instalado com OS e IDLE3 (3.5.2). Quando eu bati no terminal

sudo pip3 install scipy

Imprime

Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'

Eu já tentei reinstalar o pip3 e reiniciar o sistema operacional, mas isso não mudou. Pip3 tem trabalhado estranhamente com outra pessoa?

    
por The Invertible Hog Dog 17.04.2018 / 13:11

8 respostas

7

numpy e scipy estão nos repositórios padrão de todas as versões atualmente suportadas do Ubuntu. Para instalar o numpy e o scipy para o Python 3.x, abra o terminal e digite:

sudo apt update    
sudo apt install python3-numpy python3-scipy  

Para o Python 2.x é:

sudo apt update  
sudo apt install --no-install-recommends python2.7-minimal python2.7 # this line is only necessary for Ubuntu 17.10 and later 
sudo apt install python-numpy python-scipy
    
por karel 17.04.2018 / 13:17
11

Use python -m pip install em vez de pip install

Exemplo:

python -m pip install --user somepackage
python3 -m pip install --user somepackage

Eu comecei a receber esse problema depois de um pip upgrade:

pip install --upgrade --user pip

O executável pip (resp. pip3 ) é fornecido pela sua distro (pacote python-pip no Ubuntu 16.04).

Portanto, ele não é mantido atualizado com o pacote pip em si enquanto você atualiza o pip, e pode quebrar.

Se você acabou de usar python -m pip diretamente, por exemplo como em:

python -m pip install --user somepackage
python3 -m pip install --user somepackage

ele passa pelo caminho do Python e localiza a versão mais recente do pip e executa esse arquivo.

Ele se baseia no fato de que esse arquivo é executável, mas é um tipo de interface muito padrão e, portanto, menos provável de quebrar do que o script Debian mais invasivo.

Então, eu recomendo adicionar os seguintes aliases ao seu .bashrc :

pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )

Testado no Ubuntu 16.04 após uma atualização de pip3 9.0.1 a 18.0.

    
10

O erro é 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())
    
por Herman 24.05.2018 / 05:56
6

Enquanto o karel pode ter resolvido o problema da "instalação numpy e scipy", o que há de errado com o pip no seu sistema não foi resolvido, então você provavelmente terá mais problemas com o pip no futuro.

Procurando aqui , parece ser um problema recente bastante comum com o pip 10 nos sistemas Ubuntu. Você pode encontrar algumas soluções nesse segmento que funcionam para você, mas esperamos que uma atualização corrija isso em breve.

    
por JMAA 18.04.2018 / 10:04
0

Eu tive o mesmo problema, mas desinstalar e reinstalar com apt e 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
    
por 12.04.2019 / 13:31
0

Instalar o pip do apt e do próprio pip pode causar isso.

No meu caso, eu usei o pacote pip do Ubuntu para instalar o pipenv que instalou uma nova cópia do pip. Agora, como meu shell executa o script pip 9 do Ubuntu (para verificar a execução which pip3 ) e meu interpretador Python importa o módulo pip 10, o comando pip3 falha. Então eu quero desinstalar um dos dois.

É justo supor que você tem o pip mais recente por um motivo. Nesse caso, você quer desinstalar o pip mais antigo da seguinte forma:

sudo apt remove python3-pip

Se você tiver certeza de que está bem com o pip mais antigo e prefere o pacote do sistema, desinstale o mais recente:

~/.local/bin/pip3 uninstall pip

ou com falha

sudo /usr/local/bin/pip3 uninstall pip

    
por Jeff C 31.05.2018 / 21:37
0

Meu problema acabou sendo uma incompatibilidade entre python3.6 e 3.7. A instalação do python3.6 colocou um link em /usr/bin/python3 -> /usr/bin/python3.6 , mesmo que o sistema tenha atualizado para o python3.7.

sudo apt purge python-pip
sudo apt purge python3-pip
sudo apt install python3.7 --reinstall
cd /usr/bin
sudo rm python3
sudo ln -s python3.7 python3
python3 --version
pip3 --version
    
por Gregory Alan Bolcer 09.08.2018 / 01:42
-1

Isso funcionou para mim:

pip install --upgrade --user pip

Por install --upgrade , quero dizer, o que você está tentando instalar.

    
por Alex Jolig 11.05.2018 / 22:56

Tags