Je voudrais modifier le script setup.py du projet Ansible afin que je puisse installer ansible dans un virtualenv comme ceci:Modifier setup.py pour soutenir pip installer à partir de GitHub
pip install -e git://github.com/lorin/ansible.git#egg=ansible
Quand je fais cela maintenant , ansible ne fonctionne pas correctement, car il ne peut pas importer le module ansible.
$ ansible
Traceback (most recent call last):
File "/Users/lorin/.virtualenvs/ansible/bin/ansible", line 7, in <module>
execfile(__file__)
File "/Users/lorin/.virtualenvs/ansible/src/ansible/bin/ansible", line 25, in <module>
from ansible.runner import Runner
ImportError: No module named ansible.runner
D'après ce que je peux dire, un ou les deux de ces fichiers Python indique où trouver le module Ansible.
$venv/lib/python2.7/sites-packages/ansible.egg-link
:
/Users/lorin/.virtualenvs/ansible/src/ansible
.
$venv/lib/python2.7/sites-packages/easy-install.pth
:
import sys; sys.__plen = len(sys.path)
./setuptools-0.6c11-py2.7.egg
./pip-1.0.2-py2.7.egg
/Users/lorin/.virtualenvs/ansible/src/ansible
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
Dans les deux cas, il pointe vers /Users/lorin/.virtualenvs/ansible/src/ansible
, mais je pense qu'il devrait en fait pointer vers /Users/lorin/.virtualenvs/ansible/src/ansible/lib
, car le module ansible est un sous-ensemble de cette annuaire.
(Note: Je ne peux pas simplement déplacer le répertoire ansible/lib/ansible vers ansible/ansible car le projet en amont est peu susceptible d'accepter ce changement).
J'ai essayé de modifier ces fichiers manuellement pour voir si cela résoudrait le problème, mais qui a révélé un nouveau problème:
$ ansible
Traceback (most recent call last):
File "/Users/lorin/.virtualenvs/ansible/bin/ansible", line 4, in <module>
from pkg_resources import require; require('ansible==0.6')
File "build/bdist.linux-i686/egg/pkg_resources.py", line 2603, in <module>
File "build/bdist.linux-i686/egg/pkg_resources.py", line 666, in require
File "build/bdist.linux-i686/egg/pkg_resources.py", line 565, in resolve
pkg_resources.DistributionNotFound: ansible==0.6
Et, « gel pip » ne signale pas que le paquet a été installé à tous:
$ pip freeze
Jinja2==2.6
PyYAML==3.10
paramiko==1.7.7.2
pycrypto==2.6
wsgiref==0.1.2
Même une fois que je résoudre ces problèmes, je dois mettre en quelque sorte la variable d'environnement ANSIBLE_LIBRARY
pour pointer vers $venv/src/ansible/library
lorsque le virtualenv est activé.
Donc, pour résumer, que dois-je faire pour:
- Obtenir les différents chemins de Python pour pointer vers le bon répertoire?
- Faire face à l'erreur de version?
- Définir la variable d'environnement
ANSIBLE_LIBRARY
?
Je ne veux pas non plus changer le comportement du script setup.py pour les autres cas d'utilisation. Je n'ai aucune expérience avec les différents outils de construction Python, donc je suis à court de ressources.