關於Buildout
Buildout是由Zope公司的JimFulton開發的一個工具,可以管理創建新的應用程序。這些應用程序可以是Python程序或者其他程序,比如Apache。Buildout的一個主要目的是可以創建可復用的跨平台程序。Buildout通過一個配置文件,可以從多個部分創建、組裝並部署新的應用,即使應用包含了非Python的組件,Buildout亦能勝任。Buildout不但能夠像setuptools一樣自動更新或下載安裝依賴包,而且還能夠像virtualenv一樣,構建一個封閉隔離的開發環境。
使用Buildout
Buildout是一個非常智能的軟件,僅需完成以下兩件事情:
最新的bootstrap.py的副本,下載請戳http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py
具有“recipes”或者“eggs”項的buildout.cfg文件來進行安裝
具體步驟如下:
1. 建立開發目錄,可命名為demo-buildout,創建Buildout配置文件buildout.cfg:
#mkdir demo-buildout
#cd demo-buildout
#touch buildout.cfg
2. 下載buildout的引導腳本bootstrap.py,運行bootstrap.py來生成buildout相關的文件和目錄:
#wget http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py
#python bootstrap.py
Creating directory '/root/buildout-demo/bin'.
Creating directory '/root/buildout-demo/parts'.
Creating directory '/root/buildout-demo/eggs'.
Creating directory '/root/buildout-demo/develop-eggs'.
Generated script '/root/buildout-demo/bin/buildout'.
引導腳本創建了目錄bin,parts,eggs,develop-eggs,在bin目錄下生成了buildout腳本。
注解:
3. 創建配置文件:示例如下
#vim buildout.cfg
[buildout]
# 每個buildout都要有一個parts列表,也可以為空。
# parts用來指定構建什麼。如果parts中指定的段中還有parts的話,會遞歸構建。
parts = tools
[tools]
# 每一段都要指定一個recipe, recipe包含python的代碼,用來安裝這一段,
# zc.recipe.egg就是將這下面的egg安裝到eggs目錄中
recipe = zc.recipe.egg
# 定義python解釋器
interpreter = python
# 需要安裝的egg
eggs = pyramid
上述示例表示將Pyramid集成到Python環境中。Pyramid是一款結構簡單,穩定性好,響應速度快,文檔完備,可擴展性強的WEB框架。
運行Buildout構建安裝:
#bin/buildout
Installing tools.
Getting distribution for 'pyramid'.
......
使用buildout來構建項目:
#bin/pcreate -t starter myproject
配置Buildout:
#vim buildout.cfg
[buildout]
parts = tools
[tools]
recipe = zc.recipe.egg
interpreter = python
eggs = pyramid
[apps]
recipe = zc.recipe.egg
eggs = myproject
運行buildout:
#bin/buildout
在Buildout環境中啟動myproject:
#bin/pserve myproject/development.ini
Starting server in PID 40619.
serving on http://0.0.0.0:6543
4. Buildout對運行目錄的完全的控制權
Buildout對運行目錄具有完全的控制權,並且每次Buildout運行時,它都會讀取buildout.cfg文件來查找指令,如果我們刪除了列出的egg,它會有效刪除命令行工具和庫:
若修改配置文件為:
[buildout]
parts =
其中egg和自定義的解釋器都被刪除,執行buildout之後:
#bin/buildout -N
Uninstalling tools
-N選項表示僅列出修改後的輸出。查看bin目錄,僅剩下Buildout命令行工具。