Chaque fois que j'essaie d'installer un paquet à 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 __== '__main__':
sys.exit(main())
Cela fonctionnait très bien plus tôt, je ne suis pas sûr de savoir pourquoi il génère cette erreur .J'ai cherché sur cette erreur, mais je ne trouve rien qui puisse la réparer.
S'il vous plaît laissez-moi savoir si vous avez besoin de plus amples détails, je vais mettre à jour ma question.
Vous devez avoir mis à jour par inadvertance votre pip système (probablement via Sudo pip install pip --upgrade
)
pip 10.x ajuste l'emplacement de ses internes. La commande pip3
que vous voyez est fournie par votre responsable de paquet (probablement basé sur Debian ici?) Et n'est pas un fichier géré par pip.
Vous pouvez en savoir plus à ce sujet sur le traqueur de problèmes de pip
Vous voudrez probablement not mettre à niveau votre pip système et utiliser plutôt virtualenv.
Pour récupérer le binaire pip3
, vous devez Sudo python3 -m pip uninstall pip && Sudo apt install python3-pip --reinstall
.
Si vous souhaitez continuer sur 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 avec python3 -m pip ...
au lieu de pip3
.
résolu en une seule étape.
Moi aussi, j'ai fait face à ce problème, mais cela peut être résolu simplement en 1 commande sans se soucier de rien et perdre du temps et je l'ai essayé sur plusieurs systèmes, c'est la solution la plus propre à ce problème. Et c'est:
Pour python3: - Sudo python3 -m pip uninstall pip && Sudo apt install python3-pip --reinstall
.
Par ceci, vous pouvez simplement installer des paquets en utilisant pip3
. pour vérifier, utilisez pip3 --version
.
Pour les versions plus anciennes, utilisez: Sudo python -m pip uninstall pip && Sudo apt install python-pip --reinstall
.
Grâce à cela, vous pouvez maintenant installer simplement des packages en utilisant pip
. pour vérifier, utilisez pip --version
.
Utilisez python -m pip install
au lieu de pip 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 (paquet python-pip
sous Ubuntu 16.04) et se trouve à /usr/bin/pip
.
Par conséquent, il n'est pas tenu à jour avec le package pip
lui-même lors de la mise à niveau du pip, et risque de tomber en panne.
Si vous utilisez simplement python -m pip
directement, par exemple un péché:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
il parcourt votre chemin Python, trouve la dernière version de pip et exécute ce fichier.
Il repose sur le fait que ce fichier est exécutable via import
, mais qu’il s’agit d’un type d’interface très standard, et donc moins susceptible de s’arrêter que le script plus épineux de Debian.
Ensuite, je vous recommande d’ajouter les alias suivants à votre .bashrc
:
pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )
Testé sous Ubuntu 16.04 après une mise à jour de pip3
9.0.1 à 18.0.
Je suis sur un système où j'ai Sudo apt mais pas de pip Sudo. (Et sans accès su.) Je me suis retrouvé dans la même situation en suivant les conseils de pip:
Vous utilisez la version de pip 8.1.1, mais 18.0 est disponible. Vous devriez envisager une mise à niveau à l'aide de la commande 'pip install --upgrade pip'.
Aucun des autres correctifs n'a fonctionné pour moi, car je ne possède pas suffisamment de privilèges d'administrateur. Cependant, quelques choses me sont restées liées à la lecture de ceci:
Donc, j'ai trouvé cette ligne de commande à travailler pour me ramener à l'endroit où j'étais. Si vous utilisiez une version différente de la version 8.1.1, vous souhaiterez évidemment modifier 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 fonctionné parfaitement!
Vous pouvez résoudre ce problème en réinstallant pip.
Utilisez le code suivant pour réinstaller pip
Pour python2:
python -m pip uninstall pip && Sudo apt install python-pip --reinstall
Pour python2:
python3 -m pip uninstall pip && Sudo apt install python3-pip --reinstall
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
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
J'utilise Sudo apt remove python3-pip
puis pip
fonctionne.
~ 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]
La même chose m’est arrivée sur Pixelbook avec le nouveau LXC (strech). Cette solution est très similaire à celle 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: S'assurer que le pip est à jour
Récupérer avec python3 -m pip install --user pip==9.0.1
(ou la version qui a fonctionné)
Ce qui a fonctionné pour moi pour corriger l'erreur d'utilisation de 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?
Pour la version 2.7 de Python, la solution @Anthony fonctionne parfaitement, en modifiant python3 en python comme suit:
Sudo python -m pip uninstall pip && Sudo apt install python-pip --reinstall
Trick et travaille aussi
Sudo -H pip installer lxml
J'ai eu la même erreur, mais python -m pip
fonctionnait toujours, alors je l'ai corrigé avec l'option nucléaire Sudo python -m pip install --upgrade pip
. Il l'a fait pour moi.
Cette erreur peut être une permission. Alors, testez l’exécution de la commande avec -H flag:
Sudo -H pip3 install numpy
Comme @cryptoboy l'a dit - vérifiez quelle version de 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 lors de la migration vers le nouveau Kubuntu et le dossier .local/lib/python2.7/de mon répertoire personnel. Python installé 3.6. Je viens de retirer l'ancien dossier et maintenant tout fonctionne très bien!
camarades! J'ai le même problème et l'ai résolu. Voici ma solution… .. Premièrement, lorsque je lance 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 ceci 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 __== '__main__':
sys.exit(main())
Et puis je pense que ce n'était pas dans le chemin d'installation. Donc je cd dans le python3-pip, comme ceci:
cd /.local/lib/python3.5/site-packages/pip
ps: vous devez vous connecter dans le bon sens sur votre ordinateur Ensuite, je lève 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 ceci:
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 __== '__main__':
sys.exit(_main())
Alors, pouvez-vous voir la différence? Je peux comprendre que je dois rendre le fichier identique à celui de/usr/bin/pip3
Donc, j'ai copié le code dans /.local/lib/python3.5/site-packages/pip pour remplacer le code dans /usr/bin/pip3 et le problème a disparu!
ps: pip3 ou pip n’ont aucune différence dans ce problème ... Je serai heureux si ma solution résout votre problème!
python3.6 -m pip install scipy
installer avec la commande ci-dessus dans un répertoire particulier, :)
Dans ubuntu 18.04.1 Bionic Beaver, vous devez vous déconnecter et vous reconnecter (redémarrage inutile) 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)
from pip._internal import main
Editer le code pip de
Sudo nano /usr/bin/pip3
Pour ce que ça vaut, j'ai eu le problème avec pip
(pas pip2
ou 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 plus comment) j'avais python installé dans mon répertoire ~/.local
. Après avoir supprimé le répertoire pip de là, pip
a recommencé à fonctionner.
$ 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)
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 ignorez 'Sudo apt-get update -qq', votre pip devient corrompu et affiche l'erreur 'impossible de trouver le principal'.