<p>pip ImportError: não é possível importar o nome 'principal' após a atualização</p>

Criado em 28 mai. 2018  ·  18Comentários  ·  Fonte: pypa/pip

Observação do mantenedor: qualquer pessoa que ainda tiver esse problema, consulte # 5599.


Ambiente

  • versão pip: ???
  • Versão Python: 3.5.2
  • SO: Linux sas-linuxmint 4.4.0-92-generic # 115-Ubuntu SMP Qui. 10 de agosto 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU / Linux
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'
duplicate

Comentários muito úteis

hash -d pip
trabalhou para mim

Todos 18 comentários

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 ...

Nesse caso, o problema específico parece ser:

  1. 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.
  2. O usuário executa o wrapper do sistema a partir de /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.

Esta página foi útil?
0 / 5 - 0 avaliações