Erreur après la mise à niveau de pip: impossible d'importer le nom «principal»

467

Chaque fois que j'essaie d'installer un package à l'aide de pip, j'obtiens cette erreur d'importation:

guru@guru-notebook:~$ pip3 install numpy
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'


guru@guru-notebook:~$ cat `which pip3`
#!/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())

Cela fonctionnait bien plus tôt, je ne sais pas pourquoi il lance cette erreur. J'ai recherché cette erreur, mais je ne trouve rien pour la corriger.

Veuillez me faire savoir si vous avez besoin de plus de détails, je mettrai à jour ma question.

g_p
la source
1
Discussion supplémentaire sur ce lien .
Diagon
7
J'ai eu le même problème parce que j'avais l'habitude pip install --upgrade pipde mettre à jour pip sur un serveur où je n'ai pas de privilèges d'administrateur. Désinstaller pip avec python -m pip uninstall piprésolu mon problème.
Foad
Les réponses ne m'ont pas aidé. C'était mon problème: github.com/pypa/pipenv/issues/2095
Étienne

Réponses:

846

Vous devez avoir mis à jour par inadvertance votre pip système (probablement par quelque chose comme sudo pip install pip --upgrade)

pip 10.x ajuste l'emplacement de ses composants internes. La pip3commande que vous voyez est celle fournie par votre mainteneur de paquet (vraisemblablement basée sur Debian ici?) Et n'est pas un fichier géré par pip.

Vous pouvez en savoir plus à ce sujet sur le suivi des problèmes de pip

Vous souhaiterez probablement ne pas mettre à niveau votre système pip et utiliser à la place un virtualenv.

Pour récupérer le pip3binaire, vous devrez le faire sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.

Si vous souhaitez continuer dans un "territoire non pris en charge" (mise à niveau d'un package système en dehors du gestionnaire de packages système), vous pouvez probablement vous en sortir au python3 -m pip ...lieu de pip3.

Anthony Sottile
la source
28
sudo apt install python3-pip --reinstalln'a pas résolu le problème, mais je peux installer le package en utilisant python3 -m pip. Merci de votre aide. Je le marque comme accepté.
g_p
2
@g_p a mis à jour les instructions de "correction" - vient de les vérifier dans docker (j'aurais dû le faire la première fois!)
Anthony Sottile
6
J'ai besoin d'utiliser la commande 'python -m pip uninstall pip' car 'sudo pip uninstall pip' a donné une erreur similaire à la question d'origine
Mz A
41
Merci! Ça a aidé! Utilisez sudo python -m pip uninstall pip && sudo apt install python-pip --reinstallpour python2!
Barmaley
1
Fonctionne pour Ubuntu sur Windows. La solution est ce que @Barmaley suggère pour python2 (l'interpréteur python par défaut).
jdhao
111

Nous pouvons effacer l'erreur en modifiant le fichier pip.

Vérifiez l'emplacement du fichier:

$ which pip

chemin -> / usr / bin / pip

Accédez à cet emplacement ( / usr / bin / pip ) et ouvrez le terminal

Entrer: $ sudo nano pip

Tu peux voir:

import sys
from pip import main
if __name__ == '__main__':
     sys.exit(main())

Changer pour:

import sys
from pip import __main__
if __name__ == '__main__':
     sys.exit(__main__._main())

puis ctrl + o écrire les modifications et quitter

J'espère que cela fera l'affaire !!

vijay athithya
la source
1
Apporter ces modifications n'a pas résolu le problème, mais le ramener au texte d'origine l'a fait. ¯_ (ツ) _ / ¯
David
2
J'ai essayé cela, mais j'ai euAttributeError: module 'pip.__main__' has no attribute 'main'
dnnagy
4
Assurez-vous d'avoir écrit _main () et non main ()
vijay athithya
2
dans la dernière version pip3, le main()est déplacé vers pip._internal. La déclaration d'importation doit être remplacée parfrom pip._internal import main
Yossarian42
2
A fonctionné comme un charme! Merci
mahesh nanayakkara
69

Pour les utilisateurs de la famille Ubuntu, Debian et Linux Mint

Grâce à l'explication d'Anthony ci - dessus , vous pouvez conserver votre pip système d'origine (dans / usr / bin / et dist-packages /) et supprimer le pip installé manuellement (dans ~ / .local /) pour résoudre le conflit:

$ python3 -m pip uninstall pip

Ubuntu / Debian pip v8.1.1 (16.04) du python3-pippaquet debian (voir $ pip3 -V) affiche les mêmes résultats de recherche que le dernier pip v10.0.1, et installe très bien les derniers modules de PyPI. Il a une pipcommande qui fonctionne (déjà dans $ PATH), plus la belle --useroption patché par défaut depuis 2016. En regardant les notes de publication de pip , les versions les plus récentes concernent principalement des corrections de bugs spécifiques au cas d'utilisation et certaines nouvelles fonctionnalités, donc pas tout le monde doit se précipiter pour mettre à jour le pip. Et le nouveau pip 10 peut être déployé sur Python virtualenvs, de toute façon.

Mais indépendamment des pips, votre système d'exploitation permet d'installer rapidement des modules Python communs (y compris numpy) avec APT, sans avoir besoin de pip, par exemple:
$ sudo apt install python3-numpy python3-scipy(avec les dépendances du système)
$ sudo apt install python3-pip(pip corrigé Debian, légèrement plus ancien mais cela n'a pas d'importance)

Rappel rapide de la syntaxe apt (veuillez consulter man aptpour plus de détails):
$ sudo apt update(pour resynchroniser les fichiers d'index des packages Ubuntu à partir de sources à jour)
$ apt search <python-package-name> (recherche en texte intégral sur tous les packages disponibles)
$ apt show <python-package-name>(affiche la description détaillée du package)
$ sudo apt install <python-package-name>

Les noms de paquet préfixés par python-sont pour Python 2; et précédés de python3-sont pour Python 3 (par exemple python3-pandas). Il y en a des milliers et ils subissent des tests d'intégration dans Debian et Ubuntu. À moins que vous ne cherchiez à installer au niveau de chaque utilisateur ( pip install --useroption) ou dans virtualenv / venv, apt pourrait être ce dont vous aviez besoin. Ces packages système sont également accessibles depuis les envs virtuels, car virtualenv se remettra gracieusement à utiliser les bibliothèques système lors de l'importation si vos envs n'ont pas donné de copies des modules. Vos --usermodules personnalisés par utilisateur (avec pip ) dans ~/.local/libles remplaceront également.

Remarque, puisqu'il s'agit d'une installation à l'échelle du système , vous aurez rarement besoin de les supprimer (vous devez être attentif aux dépendances du système d'exploitation). C'est pratique pour les packages avec de nombreuses dépendances système (comme scipy ou matplotlib), car APT gardera une trace et fournira toutes les bibliothèques système et extensions C requises, tandis qu'avec pip vous n'avez aucune garantie .

En fait, pour les packages Python à l'échelle du système (contrairement à l'utilisateur, au niveau du répertoire personnel ou inférieur), Ubuntu s'attend à utiliser le gestionnaire de packages APT (plutôt que sudo pip) pour éviter de casser le système d'exploitation: sudo pip3cible le même /usr/lib/python3/dist-packagesrépertoire où APT stocke le système d'exploitation -modules sensibles. Les versions récentes de Debian / Ubuntu dépendent fortement de Python 3, donc ses modules pré-installés sont gérés par aptet ne doivent pas être modifiés.

Donc, si vous utilisez la pip3 installcommande, assurez-vous qu'elle s'exécute dans un environnement de développement virtuel isolé, comme avec virtualenv ( sudo apt install python3-virtualenv), ou avec Python3 intégré ( -m venv), ou au niveau par utilisateur ( --useroption pip, par défaut dans Ubuntu fourni) pip depuis 2016), mais pas à l'échelle du système (jamais sudo pip3!), car pip interfère avec le fonctionnement du gestionnaire de paquets APT et peut affecter les composants du système d'exploitation Ubuntu lorsqu'un module python utilisé par le système est modifié de manière inattendue. Bonne chance!


P. S. Tout ce qui précède est pour la solution «idéale» (façon Debian / Ubuntu).

Si vous souhaitez toujours utiliser le nouveau pip3 v10 exclusivement, il existe 3 solutions rapides:

  • ouvrez simplement une nouvelle session bash (un nouvel onglet de terminal, ou tapez bash) - et pip3 v10 devient disponible (voir pip3 -V). le pip3 v8 de debian reste installé mais est cassé; ou
  • la commande $ hash -d pip3 && pip3 -V pour actualiser le chemin d'accès pip3 dans le $ PATH. le pip3 v8 de debian reste installé mais est cassé; ou
  • la commande $ sudo apt remove python3-pip && hash -d pip3pour désinstaller complètement pip3 v8 de debian, en faveur de votre nouveau pip3 v10.

Remarque: Vous devrez toujours ajouter un --userindicateur à tout pip non fourni par Debian, sauf si vous êtes dans un virtualenv! (il déploie les paquets python sur ~/.local/, par défaut dans python3-pip et python-pip fournis par debian / ubuntu depuis 2016). Votre utilisation de pip 10 à l'échelle du système, en dehors de virtualenv, n'est pas vraiment prise en charge par Ubuntu / Debian. Jamais sudo pip3!

Plus de détails:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100

Alex C.
la source
Pouvez - vous me aider à comprendre pourquoi l' installation d' une version améliorée pip localement avec --user, par exemple , sans sudo, affecte ma capacité à exécuter le apt installé pip? Je pensais que les deux coexisteraient. Mais comme cet élément montre que l'apt installé est rompu après moi python3 -m pip install --user --upgrade pip. Je ne cherche pas de solution - je suis juste vraiment curieux de comprendre ce qui se passe ici.
George Hawkins
1
@George Cela se produit en raison de l'inadéquation entre les bibliothèques pip et ses wrappers qui les importent. Tenter d'exécuter la commande système pip immédiatement (sans appliquer aucune des solutions ) appelle toujours la version système installée par apt du script d'encapsuleur pip /usr/bin/pip3plutôt que celle installée en tant que --user( ~/.local/bin/pip*) selon le système d'exploitation $ PATH qui est toujours configuré pour exécuter le version système de l'encapsuleur, mais pas ses bibliothèques ..
Alex C.
2
@George C'est parce qu'il y a maintenant un nouveau paquet pip installé ~/.local/lib/python3.?/site-packages/pipqui a la priorité sur le système apt dans les importations Python relatives (le site utilisateur local a priorité sur les bibliothèques globales). Et parce que l'ancien wrapper essaie from pip import mainplutôt que from pip._internalsa __main__classe contre la nouvelle version du package pip, la commande pip de gist échoue avec ImportError: cannot import name 'main'. Ainsi, les deux pips peuvent coexister (sur le disque) mais la fonctionnalité du système d'origine sera "cassée" ..
Alex C.
+1 pour --user. pip install --userc'est ce qui m'a fait. (J'ai python 2.7, python 3.6 et python 3.7, tous installés sur Ubuntu 18.04 LTS.)
Stephen G Tuggy
46

résolu en une seule étape.

Moi aussi, j'ai fait face à ce problème, mais cela peut être résolu simplement par 1 commande sans se soucier et perdre du temps et je l'ai essayé sur plusieurs systèmes, c'est la solution la plus propre pour ce problème. Et c'est:

Pour python3: - sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.

Par cela, vous pouvez simplement installer des packages en utilisant pip3. pour vérifier l'utilisation pip3 --version.

Pour les anciennes versions, utilisez: sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall.

Par cela, vous pouvez maintenant simplement installer des packages en utilisant pip. pour vérifier l'utilisation pip --version.

Saket
la source
31

Utiliser python -m pip installau lieu depip install

Exemple:

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

L' exécutable pip(resp. pip3) Est fourni par votre distribution ( python-pippackage sur Ubuntu 16.04) et situé sur /usr/bin/pip.

Par conséquent, il n'est pas mis à jour avec le pippackage lui-même lors de la mise à niveau de pip et peut se casser.

Si vous utilisez simplement python -m pipdirectement, par exemple comme dans:

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

il passe par votre chemin Python, trouve la dernière version de pip et exécute ce fichier.

Il repose sur le fait que le fichier est exécutable via import, mais il s'agit d'un type d'interface très standard, et donc moins susceptible de casser que le script Debian plus pirate.

Ensuite, je recommande d'ajouter les alias suivants à votre .bashrc:

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

Le /usr/bin/pip3fichier Ubuntu 18.04 fait:

from pip import main

et a probablement mainété retiré pipà un moment donné qui est ce qui a brisé les choses.

La rupture de la validation pip semble être: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Déplacer toutes les API internes vers pip._internal" qui est entré dans pip 18.0.

Testé dans Ubuntu 16.04 après une mise à jour de pip39.0.1 à 18.0.

pyenv

En fin de compte cependant, pour un développement Python sérieux, je recommanderais simplement d'installer votre propre Python local avec pyenv + virtualenv, qui contournerait également ce bogue Ubuntu: /ubuntu/682869/how-do-i- installez-une-version-python-différente-en utilisant-apt-get / 1195153 # 1195153

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
la source
3
après 5 heures de recherche, cela a fonctionné pour moi. je peux vous livrer une fleur si vous m'envoyez votre adresse. Merci.
2018
18

Vous pouvez résoudre ce problème en réinstallant pip.

Utilisez l'une des commandes de ligne de commande suivantes pour réinstaller pip:

Python2:

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

Python3:

 python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
Codemaker
la source
8

J'exécute sur un système où j'ai sudo apt mais pas de sudo pip. (Et pas d'accès su.) Je me suis retrouvé dans cette même situation en suivant les conseils de pip:

Vous utilisez pip version 8.1.1, cependant 18.0 est disponible. Vous devriez envisager la mise à niveau via la commande «pip install --upgrade pip».

Aucun des autres correctifs n'a fonctionné pour moi, car je n'ai pas assez de privilèges d'administrateur. Cependant, certaines choses m'ont marqué en lisant ceci:

  • Je n'aurais pas dû faire ça. Bien sûr, pip me l'a dit. Il a menti.
  • L'utilisation de --user résout de nombreux problèmes en se concentrant sur le répertoire utilisateur uniquement.

J'ai donc trouvé que cette ligne de commande fonctionnait pour me ramener là où j'étais. Si vous utilisiez une version différente de 8.1.1, vous voudrez évidemment changer cette partie de la ligne.

python -m pip install --force-reinstall pip==8.1.1 --user

C'est la seule chose qui a fonctionné pour moi, mais cela a parfaitement fonctionné!

Scott Mermelstein
la source
7

Récupérer avec python3 -m pip install --user pip==9.0.1(ou la version qui a fonctionné)

Claire
la source
5

La même chose m'est arrivée sur Pixelbook en utilisant le nouveau LXC (strech). Cette solution est très similaire à la solution acceptée, avec une différence subtile, qui a fixé pip3 pour moi.

sudo python3 -m pip install --upgrade pip

Cela a heurté la version, et maintenant cela fonctionne comme prévu.

Je l'ai trouvé ici ... Python.org: Assurez - vous que pip est à jour

fliptopbox
la source
4

J'ai rencontré le même problème sur mon système Ubuntu 16.04. J'ai réussi à le réparer en réinstallant pip avec la commande suivante:

curl https://bootstrap.pypa.io/get-pip.py | sudo python3

jkjung13
la source
Il a l'avantage que vous l'installez à partir de la source, et rien de ce qui précède n'a fonctionné sur une Debian 9 propre et vide (de mon fournisseur de serveur dédié)
Peter Rosemann
curling internet pour super utilisateur, qu'est-ce qui pourrait mal tourner!
Sum1sAdmin
3

Les commandes ci-dessus ne fonctionnaient pas pour moi mais elles étaient très utiles:

sudo apt purge python3-pip
sudo rm -rf '/usr/lib/python3/dist-packages/pip'  
sudo apt install python3-pip
cd
cd .local/lib/python3/site-packages
sudo rm -rf pip*  
cd
cd .local/lib/python3.5/site-packages
sudo rm -rf pip*  
sudo pip3 install jupyter
Pierrot
la source
2

Dans ubuntu 18.04.1 Bionic Beaver, vous devez vous déconnecter et vous reconnecter (redémarrage non nécessaire) pour obtenir l'environnement approprié.

$ sudo apt install python-pip

$ pip --version
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip install --upgrade pip

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

$ exit
<login>

$ pip --version
pip 18.1 from /home/test/.local/lib/python2.7/site-packages/pip (python 2.7)
Jeff Hoye
la source
1

J'utilise sudo apt remove python3-pip puis piptravaille.

 ~ sudo pip install pip --upgrade
[sudo] password for sen: 
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
  ~ sudo apt remove python3-pip   
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-wheel
  python3.5-dev
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  python3-pip
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 569 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 215769 files and directories currently installed.)
Removing python3-pip (8.1.1-2ubuntu0.4) ...
Processing triggers for man-db (2.7.5-1) ...
  ~ pip

Usage:   
  pip <command> [options]
jim gabriel
la source
1
C'est parce que pipc'est pour Python 2. Les utilisations OP pip3, la version Python 3 de pip, que vous venez de supprimer. Ces deux sont distincts et non interchangeables.
Neinstein
1

Pour Python version 2.7, la solution @Anthony fonctionne parfaitement, en remplaçant python3 par python comme suit:

sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
ewalel
la source
1

Ce qui a fonctionné pour moi pour corriger l'erreur avec l'utilisation pip3était:

sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3

Tout fonctionne:

 demon@UbuntuHP:~$ pip -V
 pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

 demon@UbuntuHP:~$ pip2 -V
 pip 10.0.1 from /home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)

 demon@UbuntuHP:~$ pip3 -V
 pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

Peut-être que la nouvelle version 10.0.1 de pip ne met pas à jour le binaire dans / usr / bin? (ce qui semble ne pas être le cas)

EDIT: le même problème se produit dans Ubuntu 18.04. La meilleure solution que j'ai trouvé est de liens vers les binaires de pépin de /home/<user/.local/binla /usr/local/binou /usr/bin(selon votre préférence), comme suit:

ln -sv /home/<user>/.local/bin/pip /usr/local/bin/pip
ln -sv /home/<user>/.local/bin/pip2 /usr/local/bin/pip2
ln -sv /home/<user>/.local/bin/pip2.7 /usr/local/bin/pip2.7
ln -sv /home/<user>/.local/bin/pip3 /usr/local/bin/pip3
ln -sv /home/<user>/.local/bin/pip3.6 /usr/local/bin/pip3.6

REMARQUE: remplacez <user> par votre utilisateur actuel

Les versions associées (les plus récentes) sont en:

Version 3.6:

/home/demon/.local/lib/python3.6/site-packages/pip (python 3.6)

Version 2.7:

/home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)

cryptoboy
la source
Celui-ci a résolu mon problème. Les autres réponses ne l'ont pas fait.
Amin Husni
1
Vous ne devriez vraiment pas jouer directement avec les fichiers /usr/bin. Et, vous avez PATHtort si ce /usr/local/binn'est pas avant /usr/bin.
tripleee
Le binaire pip n'existe pas /usr/local/bin. C'est seulement dans /home/<user>/.local/binet / ou /home/<user>/.local/lib/python<version>/site-packages/pipdans les nouvelles versions (v10.0 + ne met pas à jour le binaire /usr/bin). D'où la raison pour laquelle une copie ou un lien symbolique du binaire doit être créé dans /usr/binou /usr/local/bin(selon la préférence de l'utilisateur) pour que pip puisse être exécuté globalement à partir de la ligne de commande.
cryptoboy
Le répertoire pip binaires existe et doit être lié / copié à partir de: demon @ Bionic18: ~ / .local / bin $ ls pip pip2 pip2.7 pip3 pip3.6 Le pipbinaire utilise par défaut la dernière version installée sur le système
cryptoboy
0

Astuce et fonctionne aussi

sudo -H pip install lxml

Tejas Tank
la source
0

J'ai eu cette même erreur, mais python -m pipje travaillais toujours, alors je l'ai corrigée avec l'option nucléaire sudo python -m pip install --upgrade pip. Ça l'a fait pour moi.

Sergiu
la source
0

Pour ce que ça vaut, j'ai eu le problème avec pip(pas pip2ou pip3):

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

$ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

D'une manière ou d'une autre (je ne me souviens pas comment), j'avais des trucs python installés dans mon ~/.localrépertoire. Après avoir supprimé le répertoire pip de là, j'ai piprecommencé à travailler.

$ rm -rf /home/precor/.local/lib/python2.7/site-packages/pip
$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
Michael Burr
la source
0

Vous pouvez essayer ceci:

sudo ln -sf $( type -P pip ) /usr/bin/pip
Vitthal Sarode
la source
3
Bien que ce code puisse répondre à la question, il serait préférable d'inclure un certain contexte, expliquant comment il fonctionne et quand l'utiliser. Les réponses uniquement codées ne sont pas utiles à long terme.
Giulio Caccin
0

J'ai également rencontré ce problème lorsque je voulais mettre à niveau le système pip pip3de 9.0.1 à 19.2.3.

Après l'exécution pip3 install --upgrade pip, la pipversion devient 19.2.3. Mais main()a été déplacé dans pip._internalla dernière version, ce qui laisse pip3cassé.

Donc dans le fichier /usr/bin/pip3, remplacez line 9: from pip import mainpar from pip._internal import main. Le problème sera résolu, fonctionne de la même manière pourpython2-pip . (Testé sur la distribution Ubuntu 18.04)

Selon la réponse de @Vincent H.

Yossarian42
la source
0

Veuillez exécuter les commandes suivantes pour effectuer la correction. Après l'exécution python3 -m pip install --upgrade pip, veuillez exécuter la commande suivante.

hash -r pip

Source: https://github.com/pypa/pip/issues/5221

SuperNova
la source
0

vous pouvez simplement corriger les chemins pip et pip3 en utilisant update-alternatives

la première chose que vous devez vérifier est votre $PATH course actuelle echo $PATHet voyez est que vous pouvez trouver/usr/local/bin où se trouvent habituellement pip3 et pip

il y a un changement que votre système recherche ici /bin/pipet /bin/pip3 donc je vais dire réparer le CHEMIN en l'ajoutant à votre ~/.bash_profilefichier pour qu'il persiste

export PATH=$PATH:/usr/local/bin puis vérifier est son fixe avec which pipetwhich pip3

sinon utilisez-le update-alternativespour le réparer enfin

update-alternatives --install /bin/pip3 pip3 /usr/local/bin/pip3 30

et si vous voulez pointer pip vers pip3 alors

update-alternatives --install /bin/pip pip /usr/local/bin/pip3 30
uberrebu
la source
0

Cela a fonctionné pour moi!

hash -r pip # or hash -d pip

Désinstallez maintenant la version installée de pip et réinstallez-la à l'aide des commandes suivantes.

python -m pip uninstall pip  # sudo
sudo apt install --reinstall python-pip

Si le pip est cassé, utilisez:

python -m pip install --force-reinstall pip

J'espère que cela aide!

Ebin Zacharias
la source
-1

importation principale depuis pip._internal

from pip._internal import main

Modifiez le code pip à partir de

sudo nano /usr/bin/pip3
Akhilesh NS
la source
Pouvez-vous modifier la réponse et mieux la spécifier? Comment modifier le fichier n'est pas très clair /usr/bin/pip3...
M. Volf
-1

Comme l'a dit @cryptoboy - vérifiez quelle version pip / python vous avez installée

 demon@UbuntuHP:~$ pip -V
 demon@UbuntuHP:~$ pip2 -V
 demon@UbuntuHP:~$ pip3 -V

puis recherchez les bibliothèques inutiles dans votre dossier .local / lib /.

J'ai sauvegardé les paramètres lorsque je migrais vers Kubuntu plus récent et que j'avais le dossier .local / lib / python2.7 / dans mon répertoire personnel. Python installé 3.6. Je viens de supprimer l'ancien dossier et maintenant tout fonctionne très bien!

Vergil333
la source
-1

Sur Debian, vous devrez d'abord mettre à jour apt ...

sudo apt-get update -qq
sudo apt-get install python-pip -qq
sudo pip install pip --upgrade --quiet
sudo pip2 install virtualenv --quiet

Si vous sautez «sudo apt-get update -qq», votre pip sera corrompu et affichera l'erreur «Can't find main».

Paul Kenjora
la source
-1

Cette erreur peut être une autorisation. Donc, testez l'exécution de la commande avec l' indicateur -H :

sudo -H pip3 install numpy
Mohsen Abasi
la source
la question dit très clairement que ImportError n'est pas une erreur d'autorisation
Anthony Sottile
-1

Utilisez la commande suivante avant l'exécution de toute commande pip

hash -d pip

Ça va marcher

Muhammad Adil
la source
1
Pourriez-vous peut-être préciser en quoi cela aidera / + à supprimer les commentaires condescendants?
elf