Observação do mantenedor: qualquer pessoa que ainda tiver esse problema, consulte # 5599.
Ambiente
sas@sas-linuxmint /usr/bin $ pip3 install --user --upgrade pip
Collecting pip
Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-8.1.1
You are using pip version 8.1.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
ImportError: cannot import name 'main'
sas@sas-linuxmint /usr/bin $ pip3 install --upgrade pip
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
O mesmo problema
o mesmo problema
Este é o mesmo que # 5221.
@pradyunsg Por que você está marcando isso como uma duplicata de um problema encerrado? Claramente não está fechado se ainda for um problema ...
@sydanny : https://github.com/pypa/pip/issues/5221#issuecomment -382069604
Nesse caso, o problema específico parece ser:
pip3 install --user --upgrade pip
instala o pip 10 no site do usuário, mas não desinstala a cópia do site do sistema do pip./usr/bin/pip3
que é do pip 8. fornecido pelo sistema operacional. Esse wrapper espera ver o pip 8, mas não o faz porque o site do usuário tem prioridade sobre o site do sistema.A solução é usar o wrapper pip instalado quando você instalou o pip 10 em --user
. Isso significará alterar seu PATH para colocá-lo em primeiro lugar ou usar um caminho explícito ao invocar o pip.
Tecnicamente, o problema aqui é ligeiramente diferente do # 5221, já que nesse problema os usuários estavam sobrescrevendo o pip do sistema. Mas a causa raiz é a mesma - usar um wrapper pip antigo (fornecido pelo sistema operacional) em uma versão mais recente do pip. Esse não é um cenário compatível e você não pode encontrá-lo com o uso correto do pip. Portanto, não há problema de pip, portanto, fechamos os problemas quando eles surgem. Estamos direcionando os usuários para o número 5221 porque é aí que está a maior parte dos conselhos sobre como organizar seu sistema após uma atualização incorreta.
https://github.com/pypa/pip/issues/5221#issuecomment -381568428 é o que funcionou para mim
thang @ cq-gpu : / mnt / tmp / tqdscripts / azure / nvtf $ pip3 install --user --upgrade pip
Traceback (última chamada mais recente):
Arquivo "/ usr / bin / pip3", linha 9, em
de pip importação principal
ImportError: não é possível importar o nome 'principal'
Isso não faz nada para mim. Ainda é o mesmo problema.
Por favor, dê uma olhada em # 5599 e os problemas vinculados a ele.
hash -d pip
trabalhou para mim
Eu desinstalei e reinstalei o pip. parece funcionar.
Eu tive o mesmo problema, mas desinstalar e reinstalar com apt e pip não funcionou para mim.
Eu vi outra solução no stackoverflow que apresenta uma maneira fácil de recuperar o caminho do pip3:
sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
Oi, pessoal! Eu tenho o mesmo problema e resolvi. Aqui está minha solução.
Primeiro, quando executo o pip install algo, o erro é assim:
`Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
`
Então, eu coloco o cd no arquivo / usr / bin / e cat pip3 para ver o código nele. Eu vejo isso nele:
`#!/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())
`
E então eu acho que não estava no caminho de instalação. Então, eu coloco o cd no python3-pip, assim:
cd /.local/lib/python3.5/site-packages/pip
ps: você tem que ir nas direções corretas em seu computador
Em seguida, procuro o arquivo para ver as diferenças (você pode usar outras operações para ver o código):
cat __main__.py
E eu vi isso:
`from __future__ import absolute_import
import os
import sys
# If we are running from a wheel, add the wheel to sys.path
# This allows the usage python pip-*.whl/pip install pip-*.whl
if __package__ == '':
# __file__ is pip-*.whl/pip/__main__.py
# first dirname call strips of '/__main__.py', second strips off '/pip'
# Resulting path is the name of the wheel itself
# Add that to sys.path so we can import pip
path = os.path.dirname(os.path.dirname(__file__))
sys.path.insert(0, path)
from pip._internal import main as _main # isort:skip # noqa
if __name__ == '__main__':
sys.exit(_main())
`
Então, você pode ver a diferença? Posso descobrir que tenho que tornar o arquivo igual ao arquivo em / usr / bin / pip3
Então, copiei o código em /.local/lib/python3.5/site-packages/pip para substituir o código em / usr / bin / pip3
e o problema desaparece!
ps: pip3 ou pip não têm diferença neste problema.
Ficarei feliz se minha solução resolver seu problema!
Use pip3: +1:
você deveria tentar usar
python3 -m pip install - usuário "packagename"
@linpanusst está correto
sudo ln -sf $( type -P pip ) /usr/bin/pip
O mesmo problema persiste aqui. Deepin OS, 15,7. O interessante é que, como usuário comum, ele falha, mas parece funcionar perfeitamente com o sudo:
$ pip3 search audioshare
Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'
$ sudo pip3 search librosa
librosa (0.6.2) - Python module for audio and music processing
A solução alternativa sugerida sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
não fez diferença.
Uma solução postada no stackoverflow sugere que editar /usr/bin/pip3
ajuda o usuário comum, mas prejudica sudo
:
$ sudo pip3 search librosa
Traceback (most recent call last):
File "/usr/bin/pip3", line 13, in <module>
sys.exit(__main__._main())
AttributeError: module 'pip.__main__' has no attribute '_main'
Por favor, dê uma olhada em # 5599 e os problemas vinculados a ele.
Comentários muito úteis
hash -d pip
trabalhou para mim