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
Semble python et pip sont nécessaires pour accomplir mon objectif.
L'installation de python via yum ne fonctionne pas pour moi, j'ai donc téléchargé et installé python3 manuellement 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'obtiens ceci:
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
Ce qui se passe? Comment faire pour installer pip et python3.6 bien sur mon linux?
Edit:
Lorsque j'essaie d'installer avec yum il échoue, alors 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
Un Autre Edit:
Après l'import sys, puis a appelé sys.chemin d'accès ce est ce que j'obtiens:
[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
source d'informationauteur Moonie Asemani
Vous devez vous connecter pour publier un commentaire.
Vous devez modifier le pip3 fichier comme (le chemin peut être différent):
Et modifier l'importation de la ligne principale, de sorte qu'il dit:
Après ce changement, mon pip3 commencé à travailler.
J'ai trouvé cette astuce et plus d'informations sur ce thread:
https://github.com/pypa/pip/issues/5240
Mon système d'exploitation est Linux Mint 18
Changement
À
Ne pas invoquer pip/pip3 directement, qui sont des raccourcis à des endroits différents pour les différents utilisateurs et ils ne sont pas bien entretenus lorsque vous mettez à niveau pip (cochez la case 'qui pip" et "sudo qui pip").
Ces commandes ne prenez pas de raccourcis et d'invoquer directement pip module, ce qui est très bien entretenu (fonctionne également sur Windows)
sudo chmod -R a+rx /usr/local/lib/python3.6/site-packages
Vous pouvez voir le problème dans votre
ls -l /usr/local/lib/python3.6/site-packages
sortie que votre pip répertoire est uniquement lisible par le propriétaire, qui est la racine.Faire un
cd /usr/bin
Puis
sudo nano pip
afin d'éditer le fichier pipChangement
from pip import main
àfrom pip._internal import main
Cela permettra de résoudre le problème
essayez ce qui suit comme un moyen de contourner le problème jusqu'à ce qu'il ai résolu
Je ne sais pas exactement la réponse, mais: cette erreur indique que le script peut trouver certains paquet appelé
pip
mais pas celui de droite. Probablement, une ancienne version de pip, à partir de l'arrière, avant, ils ont créé unmain
méthode (vous pouvez vérifierpip.__version__
à partir de l'interface python).Je suis prêt à parier que vous avez encore une autre, plus ancienne version de python installée qui a sa propre version de pip. Pour une raison quelconque, votre pythonpath est en cours de chargement à la place de celui qui va avec py3.6.
Certaines possibilités à examiner:
Je ne sais rien à propos de redhat, mais est-il une redhat spécifique de la façon de choisir le "défaut de python"?
Est la ligne shebang en haut de la pip script quelque chose comme
#!/usr/bin/env python
au lieu de#!/usr/bin/python3.6
comme il devrait l'être?Est-il possible de modifier votre shell du CHEMIN de sorte que la téléchargé python est utilisé?
Est-il possible de changer votre PYTHONPATH (je pense qu'il est ajouté à la valeur par défaut de
sys.path
à l'intérieur de python; regarder vers le haut) afin qu'il se charge de la nouvelle pip à la place de la vieille pip?Mon OS est Mac sierra et j'ai dû changer la ligne suivante
from pip import main
en
from pip._internal import main
Semble l'obtenir pip script a côté du fait que plus de 1 version de python pourrait résider sur une machine. J'ai donc ajouté les lignes suivantes:
Pour une raison de manquer ça. De toute façon cela a fonctionné pour moi. Merci pour votre aide les gars.