web-dev-qa-db-fra.com

Python3.6 ImportError: impossible d'importer le nom 'principal' Linux RHEL6

Mon but ultime est de télécharger et d'installer awscli http://docs.aws.Amazon.com/cli/latest/userguide/awscli-install-linux.html

Il semble que python et pip soient nécessaires pour atteindre mon objectif.

L'installation de python via yum ne fonctionne pas pour moi, j'ai donc téléchargé et installé manuellement python3 comme suit:

wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xf Python-3.6.1.tar.xz
cd Python-3.6.1.tar.xz
./configure
make
Sudo make altinstall

Quand je fais 

pip3.6 --version 

J'ai compris:

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

Environnement: RHEL 6.6 Accessible via ssh

Que se passe-t-il? Comment installer correctement pip et python3.6 sur ma machine Linux? 

Modifier:

Lorsque j'essaie d'installer via yum, cela échoue et j'essaie d'éviter d'utiliser yum:

[asemani@rcdc9pfda5r Python-3.6.1]$ Sudo yum -y install python-pip

[Sudo] password for asemeani: 
Loaded plugins: security
Setting up Install Process
No package python-pip available.
Error: Nothing to do

Une autre édition:

Après avoir importé sys puis appelé sys.path, voici ce que je reçois:

[asemani@rcdc9pfda5r Python-3.6.1]$ python3.6
Python 3.6.1 (default, Apr 28 2017, 11:03:27) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/lib/python36.Zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages']
>>> quit()
[asemani@rcdc9pfda5r Python-3.6.1]$ ls -l /usr/local/lib/python3.6/site-packages
total 32
-rw-------  1 root root  126 Apr 27 23:45 easy_install.py
drwx------ 11 root root 4096 Apr 27 23:45 pip
drwx------  2 root root 4096 Apr 27 23:45 pip-9.0.1.dist-info
drwx------  5 root root 4096 Apr 27 23:45 pkg_resources
drwx------  2 root root 4096 Apr 27 23:45 __pycache__
-rw-r--r--  1 root root  119 Apr 27 23:45 README.txt
drwx------  5 root root 4096 Apr 27 23:45 setuptools
drwx------  2 root root 4096 Apr 27 23:45 setuptools-28.8.0.dist-info
24
Moonie Asemani

Vous devez éditer le fichier pip3 comme suit (votre chemin pourrait être différent):

nano /Library/Frameworks/Python.framework/Versions/3.6/bin/pip3

Et changez la ligne principale d'importation pour qu'il soit écrit:

from pip._internal import main

Après ce changement, mon pip3 a commencé à fonctionner et je suis sous macOS. Si vous utilisez Linux, votre chemin pourrait être quelque chose comme / usr/bin/pip3

J'ai trouvé cette astuce et plus d'informations sur ce fil: https://github.com/pypa/pip/issues/5240

68
Mulperi

Mon système d'exploitation est Linux Mint 18

Sudo nano /usr/bin/pip3

Changement 

from pip import main

À

from pip._internal import main
17
Aftabul Islam

N'appelez pas directement pip/pip3, qui sont des raccourcis situés à différents endroits pour différents utilisateurs et qui ne sont pas bien entretenus lors de la mise à niveau de pip (vérifiez 'quel pip' et 'Sudo quel pip').

 $ Sudo python -m pip install xxx  #for python2 
 $ Sudo python3 -m pip install xxx  #for python3

Ces commandes ne prennent pas de raccourcis et invoquent directement le module pip, qui est très bien géré (fonctionne également sous Windows)

16
TingQian LI

Sudo chmod -R a+rx /usr/local/lib/python3.6/site-packages

Vous pouvez voir le problème ici même dans votre sortie ls -l /usr/local/lib/python3.6/site-packages que votre répertoire pip est uniquement lisible par le propriétaire, qui est root.

6
Arthur

Faites un cd /usr/bin

Puis Sudo nano pip pour éditer le fichier pip

Remplacez from pip import main par from pip._internal import main

Cela résoudra le problème

5
Iyanuoluwa Ajao

essayez ce qui suit comme moyen de contourner le problème jusqu'à ce qu'il soit résolu

Sudo python -m pip --version
>> pip 10.0.1 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
Sudo python -m pip install numpy --upgrade
>> Requirement already up-to-date: numpy in /usr/local/lib/python2.7/site-packages (1.14.2)
3
Cobry

Mon OS était Mac Sierra et je devais changer la ligne suivante

from pip import main

dans

from pip._internal import main

1
Kapidis

Je ne connais pas exactement la réponse, mais: cette erreur indique que le script peut trouver some package appelé pip, mais pas celui de droite. Probablement une ancienne version de pip, antérieure à la création de la méthode main (vous pouvez vérifier pip.__version__ à partir du shell Python).

Je suis prêt à parier que vous avez toujours une autre version plus ancienne de python, qui possède sa propre version de pip. Pour une raison quelconque, votre pythonpath charge celui-ci au lieu de celui associé à py3.6.

Quelques possibilités à explorer:

  • Je ne connais rien à redhat, mais existe-t-il un moyen spécifique de choisir le "python par défaut" à utiliser?

  • La ligne Shebang en haut du script pip ressemble-t-elle à #!/usr/bin/env python au lieu de #!/usr/bin/python3.6?

  • Est-il possible de modifier le PATH de votre shell pour que le python téléchargé soit utilisé?

  • Est-il possible de changer votre PYTHONPATH (je pense qu'il est ajouté à la valeur par défaut de sys.path dans python; regardez-le) pour qu'il charge le nouveau pip au lieu de l'ancien pip?

1
user3113723

Suivez les étapes suivantes pour résoudre le problème - (Ubuntu-Debian)

étape 1 - Aller au répertoire

cd usr/bin /

et ouvrez le fichier pip3 en utilisant gedit ou nano (via un terminal).

Étape 2- changez from pip import main en from pip._internal import main

P.S - Si vous n’avez pas l’autorisation de changer, utilisez la commande - Sudo chmod 777 pip3 et enregistrez ce fichier.

J'espère que cela t'aides!!

0
rahul ranjan

Il semble que le script get pip manque le fait que plusieurs versions de python peuvent résider sur une machine. J'ai donc ajouté les lignes suivantes:

PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3

Pour une raison quelconque, il manquait cela. Quoi qu'il en soit, cela a fonctionné pour moi. Merci pour votre aide les gars. 

0
Moonie Asemani