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.
pip install --upgrade pip
de mettre à jour pip sur un serveur où je n'ai pas de privilèges d'administrateur. Désinstaller pip avecpython -m pip uninstall pip
résolu mon problème.Réponses:
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
pip3
commande 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
pip3
binaire, vous devrez le fairesudo 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 depip3
.la source
sudo apt install python3-pip --reinstall
n'a pas résolu le problème, mais je peux installer le package en utilisantpython3 -m pip
. Merci de votre aide. Je le marque comme accepté.sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
pour python2!Nous pouvons effacer l'erreur en modifiant le fichier pip.
Vérifiez l'emplacement du fichier:
Accédez à cet emplacement ( / usr / bin / pip ) et ouvrez le terminal
Entrer:
$ sudo nano pip
Tu peux voir:
Changer pour:
puis ctrl + o écrire les modifications et quitter
J'espère que cela fera l'affaire !!
la source
AttributeError: module 'pip.__main__' has no attribute 'main'
pip3
, lemain()
est déplacé verspip._internal
. La déclaration d'importation doit être remplacée parfrom pip._internal import main
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-pip
paquet 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 unepip
commande qui fonctionne (déjà dans $ PATH), plus la belle--user
option 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)Les noms de paquet préfixés par
python-
sont pour Python 2; et précédés depython3-
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 --user
option) 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--user
modules personnalisés par utilisateur (avec pip ) dans~/.local/lib
les 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 pip3
cible le même/usr/lib/python3/dist-packages
ré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 parapt
et ne doivent pas être modifiés.Donc, si vous utilisez la
pip3 install
commande, 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 (--user
option pip, par défaut dans Ubuntu fourni) pip depuis 2016), mais pas à l'échelle du système (jamaissudo 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:
bash
) - et pip3 v10 devient disponible (voirpip3 -V
). le pip3 v8 de debian reste installé mais est cassé; ou$ 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$ sudo apt remove python3-pip && hash -d pip3
pour désinstaller complètement pip3 v8 de debian, en faveur de votre nouveau pip3 v10.Remarque: Vous devrez toujours ajouter un
--user
indicateur à 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. Jamaissudo pip3
!Plus de détails:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100
la source
pip
localement avec--user
, par exemple , sanssudo
, 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 moipython3 -m pip install --user --upgrade pip
. Je ne cherche pas de solution - je suis juste vraiment curieux de comprendre ce qui se passe ici./usr/bin/pip3
plutô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 ..~/.local/lib/python3.?/site-packages/pip
qui 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 essaiefrom pip import main
plutôt quefrom pip._internal
sa__main__
classe contre la nouvelle version du package pip, la commande pip de gist échoue avecImportError: cannot import name 'main'
. Ainsi, les deux pips peuvent coexister (sur le disque) mais la fonctionnalité du système d'origine sera "cassée" ..--user
.pip install --user
c'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.)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'utilisationpip3 --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'utilisationpip --version
.la source
Utiliser
python -m pip install
au lieu depip install
Exemple:
L' exécutable
pip
(resp.pip3
) Est fourni par votre distribution (python-pip
package sur Ubuntu 16.04) et situé sur/usr/bin/pip
.Par conséquent, il n'est pas mis à jour avec le
pip
package lui-même lors de la mise à niveau de pip et peut se casser.Si vous utilisez simplement
python -m pip
directement, par exemple comme dans: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
:Le
/usr/bin/pip3
fichier Ubuntu 18.04 fait: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
pip3
9.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
la source
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:
Python3:
la source
Vérifiez si pip a été mis en cache sur un autre chemin, pour ce faire, appelez $ quel pip et vérifiez que le chemin est différent de celui demandé dans l'erreur, si tel est le cas, exécutez:
Lorsque le cache est vide, pip fonctionnera à nouveau. référence: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
la source
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:
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:
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.
C'est la seule chose qui a fonctionné pour moi, mais cela a parfaitement fonctionné!
la source
Récupérer avec
python3 -m pip install --user pip==9.0.1
(ou la version qui a fonctionné)la source
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.
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
la source
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
la source
Les commandes ci-dessus ne fonctionnaient pas pour moi mais elles étaient très utiles:
la source
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é.
la source
J'utilise
sudo apt remove python3-pip
puispip
travaille.la source
pip
c'est pour Python 2. Les utilisations OPpip3
, la version Python 3 depip
, que vous venez de supprimer. Ces deux sont distincts et non interchangeables.Pour Python version 2.7, la solution @Anthony fonctionne parfaitement, en remplaçant python3 par python comme suit:
la source
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:
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/bin
la/usr/local/bin
ou/usr/bin
(selon votre préférence), comme suit:REMARQUE: remplacez
<user>
par votre utilisateur actuelLes 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)
la source
/usr/bin
. Et, vous avezPATH
tort si ce/usr/local/bin
n'est pas avant/usr/bin
./usr/local/bin
. C'est seulement dans/home/<user>/.local/bin
et / ou/home/<user>/.local/lib/python<version>/site-packages/pip
dans 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/bin
ou/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.pip
binaire utilise par défaut la dernière version installée sur le systèmeAstuce et fonctionne aussi
la source
J'ai eu cette même erreur, mais
python -m pip
je travaillais toujours, alors je l'ai corrigée avec l'option nucléairesudo python -m pip install --upgrade pip
. Ça l'a fait pour moi.la source
Pour ce que ça vaut, j'ai eu le problème avec
pip
(paspip2
oupip3
):D'une manière ou d'une autre (je ne me souviens pas comment), j'avais des trucs python installés dans mon
~/.local
répertoire. Après avoir supprimé le répertoire pip de là, j'aipip
recommencé à travailler.la source
Quelque chose ne va pas avec les packages, quand il génère de file / usr / bin / pip, vous devez changer l'importation:
à
Cela résout le problème, je ne sais pas pourquoi il a généré, mais il dit quelque chose dans le problème suivant:
Après la mise à niveau du pip 10 sur pyenv "ImportError: impossible d'importer le nom 'principal'"
la source
Vous pouvez essayer ceci:
la source
J'ai également rencontré ce problème lorsque je voulais mettre à niveau le système
pip
pip3
de 9.0.1 à 19.2.3.Après l'exécution
pip3 install --upgrade pip
, lapip
version devient 19.2.3. Maismain()
a été déplacé danspip._internal
la dernière version, ce qui laissepip3
cassé.Donc dans le fichier
/usr/bin/pip3
, remplacezline 9
:from pip import main
parfrom 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.
la source
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.Source: https://github.com/pypa/pip/issues/5221
la source
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 actuelleecho $PATH
et voyez est que vous pouvez trouver/usr/local/bin
où se trouvent habituellement pip3 et pipil y a un changement que votre système recherche ici
/bin/pip
et/bin/pip3
donc je vais dire réparer le CHEMIN en l'ajoutant à votre~/.bash_profile
fichier pour qu'il persisteexport PATH=$PATH:/usr/local/bin
puis vérifier est son fixe avecwhich pip
etwhich pip3
sinon utilisez-le
update-alternatives
pour le réparer enfinet si vous voulez pointer pip vers pip3 alors
la source
Cela a fonctionné pour moi!
Désinstallez maintenant la version installée de pip et réinstallez-la à l'aide des commandes suivantes.
Si le pip est cassé, utilisez:
J'espère que cela aide!
la source
importation principale depuis pip._internal
Modifiez le code pip à partir de
la source
/usr/bin/pip3
...Comme l'a dit @cryptoboy - vérifiez quelle version pip / python vous avez installée
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!
la source
Sur Debian, vous devrez d'abord mettre à jour apt ...
Si vous sautez «sudo apt-get update -qq», votre pip sera corrompu et affichera l'erreur «Can't find main».
la source
Cette erreur peut être une autorisation. Donc, testez l'exécution de la commande avec l' indicateur -H :
la source
Utilisez la commande suivante avant l'exécution de toute commande pip
Ça va marcher
la source