安裝,我想從Ansible項目修改setup.py腳本,這樣我可以安裝ansible成的virtualenv像這樣:當我做這個現在修改setup.py支持畫中畫從GitHub
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)
在這兩種情況下,它指向/Users/lorin/.virtualenvs/ansible/src/ansible
,但我認爲它實際上應該指向/Users/lorin/.virtualenvs/ansible/src/ansible/lib
,因爲ansible模塊的一個子集目錄。 (注意:因爲上游項目不太可能接受這種變化,所以我不能只將ansible/lib/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
而且,「PIP凍結」不報告包安裝在所有:
$ pip freeze
Jinja2==2.6
PyYAML==3.10
paramiko==1.7.7.2
pycrypto==2.6
wsgiref==0.1.2
甚至有一次我解決這些問題,我需要以某種方式設置ANSIBLE_LIBRARY
環境變量時,virtualenv中被激活指向$venv/src/ansible/library
。
所以,總結一下,我需要做什麼才能:
- 獲取各種Python的路徑指向正確的目錄?
- 處理版本錯誤?
- 設置
ANSIBLE_LIBRARY
環境變量?
我也不想改變其他用例的setup.py腳本的行爲。我對任何各種Python構建工具都沒有任何經驗,所以我不知所措。