我搞砸了buildout和virtualenv的組合,以設置一個孤立的 Python的開發環境,允許做可重複的構建。構建和Virtualenv
有用於擴建配方,它可以讓你整合的virtualenv到擴建:
tl.buildout_virtual_python
有了這個我buildout.cfg看起來是這樣的:
[buildout]
develop = .
parts = script
virtualpython
[virtualpython]
recipe = tl.buildout_virtual_python
headers = true
executable-name = vp
site-packages = false
[script]
recipe = zc.recipe.egg:scripts
eggs = foo
python = virtualpython
這將部署兩個可執行文件到./ bin /:
vp
script
當我執行vp時,我得到一個交互式的,孤立的python對話框,作爲e xpected(無法從系統加載任何軟件包)。 我現在所期待的是,如果我跑
./bin/script
,分離Python解釋器使用。但它並沒有,它不是孤立的「vp」(意思是我可以從系統級導入庫)。但是我可以運行:
./bin/vp ./bin/script
這將在我希望的隔離環境中運行腳本。但是必須有一種方法來指定這樣做,而不用鏈接命令,否則buildout只能解決我希望的一半問題:)
感謝您的幫助! 帕特里克
關於virtualenv的好處是它修改PATH,因此腳本可以有「#!/ usr/bin/env python「就像他們應該這樣做,他們將使用buildout版本。沒有virtualenv可以做到這一點嗎? – Xentac 2010-02-09 18:32:37
virtualenv修改路徑,但這也意味着您不應該在每次使用腳本時都忘記*以啓用virtualenv。在這方面,建設有更持久的解決方案。 buildout指出你的腳本的「#!...」行是在你的build中運行的真正的python中,所以它對你的機器是正確的。 沒有virtualenv?您可以編寫一個shell腳本,將PYTHONPATH設置爲特定的內容並獲得某些* virtualenv的功能。但不是全部,特別是在安裝時。 – 2010-02-10 14:04:28
快速更正:'sys.path [0:0] = [...]'不能完全代替sys.path,它只是在它的開頭插入更多的項目。 – 2010-10-06 18:01:37