<p>pip ImportError : impossible d'importer le nom 'main' après la mise à jour</p>

Créé le 28 mai 2018  ·  18Commentaires  ·  Source: pypa/pip

Note du responsable : toute personne qui rencontre toujours ce problème, veuillez consulter #5599.


Environnement

  • version pépin : ???
  • Version Python : 3.5.2
  • Système d'exploitation : Linux sas-linuxmint 4.4.0-92-generic #115-Ubuntu SMP jeu. 10 août 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

Commentaire le plus utile

hash -d pip
travaillé pour moi

Tous les 18 commentaires

Même problème

même problème

C'est la même chose que #5221.

@pradyunsg Pourquoi

Dans ce cas, le problème particulier semble être :

  1. pip3 install --user --upgrade pip installe pip 10 sur le site de l'utilisateur, mais ne désinstalle pas la copie du site système de pip.
  2. L'utilisateur exécute le wrapper système à partir de /usr/bin/pip3 qui provient du pip 8 fourni par le système d'exploitation. Ce wrapper s'attend à voir le pip 8, mais ce n'est pas le cas car le site de l'utilisateur a la priorité sur le site du système.

La solution consiste à utiliser le wrapper pip installé lorsque vous avez installé pip 10 dans --user . Cela signifiera changer votre PATH pour le mettre en premier, ou utiliser un chemin explicite lorsque vous invoquez pip.

Techniquement, le problème ici est légèrement différent de #5221, car dans ce problème, les utilisateurs écrasaient le pip système. Mais la cause première est la même - utiliser un ancien wrapper pip (fourni par le système d'exploitation) contre une version plus récente de pip. Ce n'est pas un scénario pris en charge et vous ne pouvez pas le rencontrer avec une utilisation correcte de pip. Il n'y a donc pas de problème de pip, nous fermons donc les problèmes lorsqu'ils surviennent. Nous orientons les utilisateurs vers #5221 car c'est là que se trouve l'essentiel des conseils sur la façon de ranger votre système après une mise à niveau incorrecte.

https://github.com/pypa/pip/issues/5221#issuecomment -381568428 est ce qui a fonctionné pour moi

thang@cq-gpu :/mnt/tmp/tqdscripts/azure/nvtf$ pip3 install --user --upgrade pip
Traceback (appel le plus récent en dernier) :
Fichier "/usr/bin/pip3", ligne 9, dans
de l'importation principale de pip
ImportError : impossible d'importer le nom 'main'

Cela ne me fait rien. Toujours le même problème.

Veuillez jeter un œil à #5599 et aux problèmes qui y sont liés.

hash -d pip
travaillé pour moi

J'ai désinstallé et réinstallé pip. semble fonctionner.

J'ai eu le même problème, mais désinstaller et réinstaller avec apt et pip n'a pas fonctionné pour moi.

J'ai vu une autre solution sur stackoverflow qui présente un moyen facile de récupérer le chemin pip3 :

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

Salut les gars ! J'ai le même problème et je l'ai résolu. Voici ma solution.
Tout d'abord, lorsque j'exécute pip install quelque chose, l'erreur est la suivante :

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

Donc, je cd dans le fichier /usr/bin/ et cat pip3 pour voir le code qu'il contient. Je vois ça dedans :

`#!/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())
`

Et puis je pense que ce n'était pas dans le chemin d'installation. J'ai donc cd dans le python3-pip, comme ceci :

cd /.local/lib/python3.5/site-packages/pip
ps: vous devez cd dans les bonnes directions dans votre ordinateur
Ensuite, je cat le fichier pour voir les différences (vous pouvez utiliser d'autres opérations pour voir le code):

cat __main__.py

Et j'ai vu ça :

`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())
`

Alors, voyez-vous la différence ? Je peux comprendre que je dois rendre le fichier identique au fichier dans /usr/bin/pip3

J'ai donc copié le code dans /.local/lib/python3.5/site-packages/pip pour remplacer le code dans /usr/bin/pip3
et le problème disparaît !

ps: pip3 ou pip n'ont aucune différence dans ce problème.
Je serai heureux si ma solution résout votre problème !

Utilisez pip3 :+1 :

tu devrais essayer d'utiliser
python3 -m pip install --user "nom du paquet"

@linpanusst a raison

sudo ln -sf $( type -P pip ) /usr/bin/pip

Le même problème persiste ici. Deepin OS, 15.7. Ce qui est intéressant, c'est qu'en tant qu'utilisateur régulier, il échoue mais semble fonctionner correctement avec 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

La solution sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall contournement suggérée

Une solution publiée sur stackoverflow suggère que l'édition de /usr/bin/pip3 aide l'utilisateur régulier, mais casse 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'

Veuillez jeter un œil à #5599 et aux problèmes qui y sont liés.

Cette page vous a été utile?
0 / 5 - 0 notes