Ansibleプロジェクトのsetup.pyスクリプトを変更して、次のようにansibleをvirtualenvにインストールできるようにします。
pip install -e git://github.com/lorin/ansible.git#egg=ansible
今これを行うと、ansibleモジュールをインポートできないため、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
私の知る限り、これらのファイルの一方または両方は、Pythonに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)
どちらの場合も、それはを指しますが、ansibleモジュールはそのディレクトリのサブセットであるため、/Users/lorin/.virtualenvs/ansible/src/ansible
実際にはを指す必要があると思います。/Users/lorin/.virtualenvs/ansible/src/ansible/lib
(注:アップストリームプロジェクトがその変更を受け入れる可能性が低いため、ansible / lib/ansibleディレクトリをansible/ansibleに移動することはできません)。
これらのファイルを手動で変更して問題が解決するかどうかを確認しようとしましたが、新しい問題が明らかになりました。
$ 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
また、「pipfreeze」はパッケージがインストールされたことをまったく報告しません。
$ pip freeze
Jinja2==2.6
PyYAML==3.10
paramiko==1.7.7.2
pycrypto==2.6
wsgiref==0.1.2
これらの問題を解決した後でも、virtualenvがアクティブ化されたときANSIBLE_LIBRARY
に指すように環境変数を設定する必要があります。$venv/src/ansible/library
したがって、要約すると、私は何をする必要がありますか?
- 適切なディレクトリを指すさまざまなPythonパスを取得しますか?
- バージョンエラーに対処しますか?
ANSIBLE_LIBRARY
環境変数を設定しますか?
また、他のユースケースのsetup.pyスクリプトの動作を変更したくありません。さまざまなPythonビルドツールの経験がないので、途方に暮れています。