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
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
Mon système d'exploitation est Linux Mint 18
Sudo nano /usr/bin/pip3
Changement
from pip import main
À
from pip._internal import main
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)
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.
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
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)
Mon OS était Mac Sierra et je devais changer la ligne suivante
from pip import main
dans
from pip._internal import main
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?
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!!
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.