web-dev-qa-db-fra.com

Exécution de Pip3 ImportError: impossible d'importer le nom 'main'

Je souhaite installer Scipy (Numpy est déjà installé). J'ai Python 3.5.1-3 installé avec OS et IDLE3 (3.5.2). Quand je frappe dans le terminal

Sudo pip3 install scipy

Il imprime

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

J'ai déjà essayé de réinstaller pip3 et de redémarrer l'OS, mais cela n'a pas changé. Pip3 a-t-il travaillé étrangement avec quelqu'un d'autre?

14

numpy et scipy sont dans les référentiels par défaut de toutes les versions actuellement prises en charge d'Ubuntu. Pour installer numpy et scipy pour Python 3.x, ouvrez le terminal et tapez:

Sudo apt update    
Sudo apt install python3-numpy python3-scipy  

Pour Python 2.x c'est:

Sudo apt update  
Sudo apt install --no-install-recommends python2.7-minimal python2.7 # this line is only necessary for Ubuntu 17.10 and later 
Sudo apt install python-numpy python-scipy
7
karel

tilisez python -m pip install au lieu de pip install

Exemple:

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

J'ai commencé à rencontrer ce problème après une mise à niveau de pip:

pip install --upgrade --user pip

L'exécutable pip (resp. pip3) est fourni par votre distribution (paquet python-pip sur Ubuntu 16.04).

Par conséquent, il n'est pas tenu à jour avec le package pip 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 passe par votre chemin Python et trouve la dernière version de pip, puis exécute ce fichier.

Il s’appuie sur le fait que ce fichier est exécutable, mais qu’il s’agit d’un type d’interface très standard, et donc moins susceptible de se rompre 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é dans Ubuntu 16.04 après une mise à jour de pip3 9.0.1 à 18.0.

Le bogue se trouve dans le pip 10.0.0.

Sous Linux, vous devez modifier le fichier:/usr/bin/pip à partir de:

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

pour ça:

from pip import __main__
if __== '__main__':
    sys.exit(__main__._main())
11
Herman

Bien que Karel ait peut-être résolu votre problème "installer numpy and scipy", le problème avec pip sur votre système n’a pas été résolu, vous aurez donc probablement plus de problèmes avec ce processus.

En regardant ici , cela semble être un problème récent assez courant avec le pip 10 sur les systèmes Ubuntu. Vous pouvez trouver des solutions sur ce fil qui fonctionnent pour vous, mais j'espère qu'une mise à jour résoudra le problème rapidement.

6
JMAA

Mon problème a fini par être un décalage entre python3.6 et 3.7. L'installation de python3.6 a mis un lien dans /usr/bin/python3 -> /usr/bin/python3.6 même si le système était passé à python3.7.

Sudo apt purge python-pip
Sudo apt purge python3-pip
Sudo apt install python3.7 --reinstall
cd /usr/bin
Sudo rm python3
Sudo ln -s python3.7 python3
python3 --version
pip3 --version
0

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

J'ai vu une autre solution 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
0
Hamza Ali

L'installation de pip à partir d'apt et de pip lui-même peut en être la cause.

Dans mon cas, j'ai utilisé le paquet pip d'Ubuntu pour installer pipenv, qui a ensuite installé une copie plus récente de pip. Maintenant, parce que mon shell exécute le script pip 9 d'Ubuntu (pour vérifier l'exécution de which pip3) et que mon interprète Python importe ensuite le module pip 10, la commande pip3 échoue. Je veux donc désinstaller l'un des deux.

Il est juste de supposer que vous avez le nouveau pip pour une raison. Dans ce cas, vous souhaitez désinstaller l’ancien pip comme ceci:

Sudo apt remove python3-pip

Si vous êtes certain de pouvoir utiliser l'ancien pip et préférez le package système, vous voudrez désinstaller le plus récent:

~/.local/bin/pip3 uninstall pip

ou à défaut

Sudo /usr/local/bin/pip3 uninstall pip

0
Jeff C