[英]buildout - using different python version
我已經建立了必須在舊機器上運行的 buildout 項目(具體是 django),它在我的本地系統中使用 python 2.7 運行良好。
在生產服務器中,它運行 python 2.5,我想配置它會下載和使用 2.6 的構建,但只有這個項目不是系統范圍的。
所以我認為它應該使用某種配方,但是女巫以及如何使用? 我找不到一個。 我希望只使用buildout.cfg
文件來實現它..
Buildout 專門支持這種情況。 構建中的每個部分都可以使用它自己的 Python 解釋器,或者您可以為所有部分全局設置一個 Python 解釋器。 這默認為用於運行 buildout 的 python。
要設置使用的 python 解釋器,請將python
選項設置為包含executable
選項的部分的名稱。 這可以是構建全新 python 解釋器的一部分。 下面是一個例子:
[buildout]
python = python
parts =
python
[python]
recipe = zc.recipe.cmmi
url = http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz
executable = ${buildout:directory}/parts/python/bin/python2.6
extra_options=
--enable-unicode=ucs4
--with-threads
--with-readline
此構建中的任何其他部分現在將使用 python 2.6 可執行文件。
您可能還想將 python 腳本符號鏈接到 buildout bin/
目錄中; 以下部分將為您做到這一點:
[pythonbin]
recipe = plone.recipe.command
command = ln -s ${python:executable} ${buildout:bin-directory}/python
無論您使用哪種 python 運行初始 bootstrap.py,都將用於整個項目。 所有路徑都將引用該特定 python 並且將使用該特定 python 的站點包。
這是關於構建的最好的事情之一
這是一個 32 位的 python 2.6:
/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 boostrap.py
這是一個 64 位的 python 2.7:
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python bootstrap.py
現在去看看它創建的 bin/。
然后執行您的實際 bin/buildout -c dev.cfg 並查看 bin 中的腳本。 對於我的 32 位示例:
對於我在 django 文件中看到的第一個:
#!/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python
...
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages',
接受的答案說您需要編譯整個python。 不需要也不建議這樣做,盡管這意味着您有一個完全隔離的站點包。 但是有更簡單的方法可以告訴 buildout 不包含站點包。
esaelPsnoroMoN 的答案實際上是正確的,但他/他沒有很好地描述解決方案。 (之前我自己忽略了)
Martijn Pieters 的回答似乎對我沒有幫助。 我需要在構建腳本中使用不同版本的 python。 這是我的例子
[buildout]
parts = py2script
py3script
index = https://pypi.python.org/simple
[python36]
executable = /usr/bin/python3.6
[python27]
executable = /usr/bin/python2.7
[py3script]
recipe = zc.recipe.egg:scripts
python = python36
eggs = bobo
interpreter = python3_interpreter
[py2script]
recipe = zc.recipe.egg:scripts
python = python27
eggs = bobo
interpreter = python2_interpreter
每次在 python(2|3)_interpreter 腳本中都會寫入我用於引導的 python 版本。 所以我的 buildout.cfg 似乎沒有按預期工作。
通常每個構建項目都包含一個 bootstrap.py 腳本,最初使用您需要/想要的 Python 解釋器運行該項目。 運行 bootstrap.py 將在本地創建/安裝一個 buildout 和所有你需要的東西。 典型的使用模式是:
svn checkout <some_url_of_a_buildout_project>
cd my_project
/path/to/my/python bootstrap.py
bin/buildout
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.