web-dev-qa-db-fra.com

Pourquoi ne puis-je pas trouver ansible lorsque je l'installe à l'aide de setup.py?

Parce que j'ai eu des problèmes avec Ansible (je suis sur mac) qui semblait être corrigé dans la dernière version de développement aujourd'hui, j'ai désinstallé ansible via pip (Sudo pip uninstall ansible) et réinstallé la dernière version de développement à partir du référentiel github en utilisant la méthode classique setup.py, qui semblait se terminer avec succès ( sortie complète ici .

Alors j'ai essayé de l'utiliser:

$ ansible --version
-bash: ansible: command not found
$ which ansible
$

J'ai vérifié où il est installé. De la sortie complète que j'ai liée à ci-dessus, j'ai trouvé qu'il est installé dans /usr/local/lib/python2.7/site-packages, et en effet là je trouve un œuf:

$ ls -l /usr/local/lib/python2.7/site-packages | grep ansible
drwxr-xr-x    4 root    admin     136 Aug 22 16:33 ansible-2.4.0-py2.7.Egg

Quand je démarre Python et vérifie le dossier site-packages, je trouve un dossier différent:

>>> import site; print site.getsitepackages()[0]
/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

mais c'est un lien symbolique vers le même dossier:

$ ls -l /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
lrwxr-xr-x  1 hielke  admin  54 Aug 13 22:36 /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages -> ../../../../../../../../../lib/python2.7/site-packages

Donc je suppose que le problème est qu'aucun lien symbolique n'est créé vers le paquet ansible dans /usr/local/bin/. Mais je ne sais pas comment je pourrais créer un tel lien symbolique et pourquoi il n'apparaîtrait pas en premier lieu.

Est-ce que quelqu'un sait comment je peux avancer d'ici? Tous les conseils sont les bienvenus!

7
kramer65

Lorsque vous appelez ansible à partir du shell, bash recherchera dans votre $PATH Un fichier nommé ansible qui est exécutable. Ce n'est peut-être pas le seul problème, mais c'est la cause immédiate de l'erreur que vous voyez. Le fichier .Egg Lui-même n'est pas un exécutable, c'est juste un fichier utilisé pour distribuer le code.

Si ansible a été installé correctement, vous devriez pouvoir le trouver en utilisant Locate ou l'interface graphique du Finder OSX. Le nom doit correspondre exactement, sans extension de fichier. Vous trouverez probablement aussi ansible-connection, ansible-console, Etc. au même endroit où vous trouverez l'exécutable ansible. Si vous le trouvez, tant mieux! Testez-le et ajoutez ce répertoire à votre $PATH Dans un terminal comme celui-ci:

export PATH=$PATH:/path/to/ansible

/path/to/ansible Est le répertoire où vous avez trouvé les exécutables. Cette modification de la variable $PATH Est temporaire et disparaîtra lorsque vous fermerez votre shell. Si vous pouvez maintenant exécuter ansible depuis bash, vous pouvez rendre la modification permanente en ajoutant cette exportation à la fin de votre fichier $HOME/.bash_profile Ou en ajoutant une règle dans /etc/paths.d (Recommandé par Apple) . En savoir plus sur la façon exacte de les faire ici si vous ne les connaissez pas.

Maintenant, si ce n'est pas le problème et que vous ne trouvez pas l'exécutable ansible, l'installation elle-même est votre problème. Vous pouvez également essayer d'utiliser un environnement virtuel (si vous l'avez installé) pour vous assurer que la version que vous extrayez de github n'est pas cassée:

git clone https://github.com/ansible/ansible.git
cd ansible
virtualenv venv
source venv/bin/activate
pip install .
which ansible

Au moment d'écrire ces lignes, ce qui précède me donne une installation ansible fonctionnelle.

7
rnorris

Trouvez où ansible réside sur votre Mac. La plupart du temps, son /Users/<yourusername>/Library/Python/3.7/bin ou /Users/<yourusername>/Library/Python/2.7/bin. Ensuite ...

export PATH=$PATH:/Users/<yourusername>/Library/Python/3.7/bin

Vous pouvez le stocker dans votre .bashrc fichier.

2
wale

Eh bien, je pense que vous avez juste besoin de créer un lien logiciel

ln -s /Users/${yourname}/Library/Python/${python version}/bin/ansible /usr/local/bin/ansible

0
caopeng

Je suggère de désinstaller Ansible et de le réinstaller en utilisant pip selon la méthode suggérée dans les documents Ansible :

Ou si vous recherchez la dernière version de développement:

pip install git+https://github.com/ansible/ansible.git@devel

Si vous installez sur OS X Mavericks, vous pouvez rencontrer du bruit de votre compilateur. Une solution de contournement consiste à effectuer les opérations suivantes:

$ Sudo CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install ansible

Les lecteurs qui utilisent virtualenv peuvent également installer Ansible sous virtualenv, mais nous vous recommandons de ne pas vous en préoccuper et d'installer simplement Ansible à l'échelle mondiale. N'utilisez pas easy_install pour installer directement ansible.

0
taleinat