J'ai installé le aws cli selon les instructions officielles d'Amazon.
Sudo pip install awscli
Cependant, aws
est introuvable sur mon chemin. L'installation semble avoir été réussie. Il y a un certain nombre de fichiers situés à /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/awscli
, mais il n'y a aucun exécutable nommé aws
. Ma version de python est la version 3.3.4, ma version de pip est la version 1.5.4 et l'exécution de cette commande sous OS X 10.9. Quel pourrait être le problème?
Merci!
Le PO a répondu à sa propre réponse, mais l'emplacement exact de l'exécutable est plus susceptible d'être différent que d'être identique. Décrivons donc POURQUOI sa solution a fonctionné afin que vous puissiez l'appliquer à vous-même.
Il y a un certain nombre de fichiers situés à
/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/awscli
, mais il n'y a aucun exécutable nommé aws.
La solution consistait à ajouter
/Library/Frameworks/Python.framework/Versions/3.3/bin
à my PATH.
Comparez ces chemins pour trouver leur point commun:
/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/awscli
/Library/Frameworks/Python.framework/Versions/3.3/bin
Notez qu'ils divergent à lib
vs bin
. Et considérez que le PO a déclaré: "il n’existe pas de fichiers exécutables nommés aws.}"
lib
.bin
qui partagent une lignée commune.Dans ce cas, j'aurais suggéré de rechercher les dossiers bin
via:
find /Library/Frameworks/Python.framework -type d -name bin
Mais si vous voulez le faire, vous pouvez aussi bien chercher votre exécutable via:
find /Library/Frameworks/Python.framework -type f -perm -100 -name aws
# the `-` in `perm -100` means not an exact match of 100
# but any octal that includes 100
Comment OP a-t-il su regarder dans son /Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/
?
La réponse la plus simple est également notre prochaine leçon d’apprentissage:
Voici comment je fais ça:
$ python -c 'import awscli; print(awscli)'
<module 'awscli' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/awscli/__init__.pyc'>
$ python3 -c 'import awscli; print(awscli)'
<module 'awscli' from '/System/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/awscli/__init__.py'>
J'ai 2 Pythons et aucun d'entre eux n'utilise les mêmes chemins ni les mêmes modèles de chemins que l'OP.
$ find /System/Library/Frameworks/Python.framework -type d -name bin
/System/Library/Frameworks/Python.framework/Versions/2.7/bin
/System/Library/Frameworks/Python.framework/Versions/3.6/bin
$ find /System/Library/Frameworks/Python.framework -type f -perm -100 -name aws
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/aws
/System/Library/Frameworks/Python.framework/Versions/3.6/bin/aws
Comme vous pouvez le constater, j’ai 2 dossiers bin
et 2 exécutables aws
. Je veux probablement utiliser la version Python3.6. Toutefois, si j'effectue des essais et des erreurs sur un système distant pour un système distant utilisant la version Python2.7, je souhaite l'utiliser. Et c'est exactement pourquoi j'ai 2 version installée.
De http://docs.aws.Amazon.com/cli/latest/userguide/cli-install-macos.html#awscli-install-osx-path
Pour macos modernes/OSX, vous devez trouver votre répertoire ~/Library/Python/$version/bin
et l’ajouter à votre $PATH
. Cela vous aidera à localiser celui où aws
a été installé.
$ ls -d ~/Library/Python/*/bin/aws
/Users/bbronosky/Library/Python/3.6/bin/aws
Donc, basé sur cela, j'ai ajouté cette ligne à mon .bashrc
export PATH=$HOME/Library/Python/3.6/bin:$PATH
Cela a fonctionné pour moi sur mac:
Sudo -H pip install awscli --upgrade --ignore-installed six
La solution était d'ajouter
/Library/Frameworks/Python.framework/Versions/3.3/bin
à la mon chemin.
Sur ubuntu et installé avec pip3 sans Sudo, l'emplacement correct à ajouter à mon chemin était ~/.local/bin
:
export PATH=$HOME/.local/bin:$PATH
J'ai mis à niveau d'OSX 10.7 à OSX 10.9 et, par la suite, mon installation d'aws ne fonctionnait plus.
J'ai observé des erreurs comme celle-ci:
$ pip
Traceback (most recent call last):
File "/usr/local/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module>
working_set.require(__requires__)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require
needed = self.resolve(parse_requirements(requirements))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve
raise DistributionNotFound(req) # XXX put more info here
pkg_resources.DistributionNotFound: pip==1.5.5
La solution pour la mise à niveau du système d'exploitation avait modifié les autorisations.
Indice cadeau:
Sudo pip <--- travaillé
pip <--- échoué
Alors j'ai fait ça:
Sudo chmod -R a+r /Library/Python/
et ensuite, je peux utiliser les commandes aws à nouveau.
Je ne suis pas sûr que ce soit utile pour les autres, mais je me suis dit que je le mettrais dans le même sac.
Lors de l'installation dans virtualenv: 'pip install awscli' (sans Sudo) fonctionnait parfaitement sous OS X; mais pas sur la version 6.6 de CentOS, par ex. 'quel aws' n'a rien trouvé. La solution:
chmod u+x /PATH-TO-YOUR-VIRTUALENV/bin/aws
Peut utiliser pip show awscli
pour trouver l'emplacement d'installation.
$ pip show awscli
Name: awscli
Version: 1.16.94
Summary: Universal Command Line Environment for AWS.
Home-page: http://aws.Amazon.com/cli/
Author: Amazon Web Services
Author-email: UNKNOWN
License: Apache License 2.0
Location: /root/.local/lib/python2.7/site-packages
Requires: s3transfer, colorama, rsa, docutils, botocore, PyYAML
Required-by:
Ce que je fais généralement est de copier le fichier exécutable dans/usr/local/bin
cp $(find / -name aws) /usr/local/bin
Windows est probablement la minorité ici, mais l'ajout ci-dessous à mon PATH a fonctionné pour moi. Pour référence, j'ai installé le CLI via pip:
C:\Python27\Scripts
vérifiez votre version de python mais je suppose que vous utilisez python 3.3
export PATH = $ HOME/Bibliothèque/Python/3.3/bin: $ PATH
paths
directement si vous avez les droits d’administrateur.Si vous ne disposez pas des droits d’administrateur, choisissez la réponse la plus fréquente, mais dans ce cas, je vous recommande vivement de modifier directement les fichiers paths
, situés à /etc/paths
.
Utilisez votre éditeur préféré et collez simplement le chemin souhaité sur une nouvelle ligne:
Exemple de fichier paths
:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Users/username/Library/Python/3.6/bin #new path added here at bottom of file
Collez en haut ou en bas ou dans l'ordre de votre choix les emplacements recherchés pour les fichiers binaires (s'il existe des fichiers binaires avec des noms en double).
L'utilisation du fichier paths
vous évite d'avoir à mémoriser la syntaxe de concaténation ou le problème potentiel si vous écrivez une instruction d'exportation incorrecte.
J'ai eu un problème similaire sur Windows 10. J'ai dû ajouter ci-dessous à PATH
variables
Pour Python :
C:\Users\kumar\AppData\Local\Programs\Python\Python37\
PourPIP:
C:\Users\kumar\AppData\Local\Programs\Python\Python37\Scripts\
Pour awscli travailler:
C:\Users\kumar\AppData\Roaming\Python\Python37\Scripts