4

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ビルドツールの経験がないので、途方に暮れています。

4

2 に答える 2

3

編集可能なインストール (-eフラグ) の問題は、プロジェクトに次のような構造体が必要なことです。

├── projectname
│   ├── projectname
│   │   ├── __init__.py
│   │   └── anotherfile.py
│   └── setup.py

そのサブディレクトリに注意してくださいprojectname。の場合、このAnsible構造はありません。したがって、編集可能なインストールを使用しても機能しません。

-eそのフラグを削除するだけでうまくいくかもしれません:

pip install -e git://github.com/lorin/ansible.git#egg=ansible
于 2012-07-23T01:32:00.260 に答える
0

見る:

于 2014-08-01T04:25:20.767 に答える