zc.buildout 簡稱為 buildout,它是讓程式員建置 Python 應用軟體開發環境的工具,包括 Zope 或 Plone 系統也都適用。本文件介紹 buildout 的使用技巧,協助讀者在 windows 中建立 Plone3 的開發環境。
環境準備
本文件使用 windows XP professional 作業系統做示範,並使用當前最新版本的 Plone-3.2.1,Plone 下載網址為: http://plone.org/products/plone。
所需相關套件
shell + 文字編輯器
Windows 最常見的是 cmd.exe 和 notepad。
C compiler
Windows 可使用 mingw32,安裝步驟請參考下面說明,下載網址在 http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=240780。
subversion client
下載網址在 http://subversion.tigris.org/files/documents/15/39559/svn-1.4.5-setup.exe
MinGW 安裝步驟
1.下載 Automated MinGW Installer, 點此 下載適合自己的版本。因為我們使用的是windows版本,所以請點選 MinGW-5.1.4.exe下載回來安裝
安裝 MinGW的方式與一般windows的程式一樣,按照預設一直按下一步即可,要注意的有安裝路徑為 C:\MinGW,預設安裝是最簡安裝,建議改成 Full 完整安裝。還有就是安裝程式會使用網路下載所需要的檔案,所以請確認主機可以上網:
安裝畫面
在這裡改成 Full安裝
程式的安裝目錄
2.安裝完成後到 C:\MinGW\libexec\gcc\mingw32\3.4.5 目錄把 cc1.exe 和 collect2.exe 複製到 C:\MinGW\bin 目錄裡
複製這兩個檔案
3.請 到此 下載 libpython24.a 放到 C:\MinGW\lib 目錄,再把 C:\MinGW\bin 加到系統環境變數 PATH 裡。
點選下載 libpython24.a
將 libpython24.a放到 C:\\MinGW\\lib 目錄下
設定環境變數
4.接著打開命令提示字元,輸入 gcc --version 測試是否成功
5.接著要通知 Python 的 distutils 已可以使用 MinGW,以 Plone 安裝在 C:\\Plone3 目錄為例,要到 C:\\Plone3\\python\\Lib\\distutiles 目錄裡建立 distutils.cfg 檔案,distutils.cfg檔案內容如圖所示:
這樣就完成MinGW的安裝
Python 相關的工具軟體
PIL (Python Imaging Library)
如果是利用 Plone 的安裝套件來起步的話,那麼 PIL 在安裝Plone時就已經安裝完成。下載網址: http://effbot.org/downloads/PIL-1.1.6.win32-py2.4.exe
setuptools
下載網址: http://peak.telecommunity.com/DevCenter/setuptools
elementtree
下載網址: http://effbot.org/zone/element-index.htm
ZopeSkel
在安裝 setuptools 後,可用 easy_install ZopeSkel 方式完成安裝,步驟如下:
1. 打開命令提示字元,切換目錄到 C:\Plone3\python\Scripts
2. 輸入 python easy_install-script.py -U ZopeSkel並執行
3. 成功之後 C:\\Plone3\\python\\Scripts就會出現幾個檔案,如下圖
4. 接著測試 paster是否可正常執行,輸入 paster create --list-template,若出現以下結果代表正常
安裝完上述工具軟體之後,還必須把 python 的檔案補齊,請先下載 python 2.4.5 的原始碼,解開之後:
1. 把 PC\pyconfig.h 檔案複製到 Include 目錄
2. 再把 Include 目錄複製到 C:\Plone3\python(要注意,原始碼可能是使用 tar打包的,請使用 7-zip 來解開)
環境變數
把相關的路徑設定到環境變數裡,有助於使用上的方便,請把下列幾個路徑加入環境變數:
C:\MinGW\bin (安裝MinGW時應該已經設定好了)
C:\Plone3\python
C:\Plone3\python\Scripts
上述套件及設定都完成後,buildout 環境就準備好了,接下來的部分就是專案建立的實做。
設定專案目錄
接著要設定專案目錄,請依照需求新增目錄,在本文件中為C:\\Mybuildout。新增完目錄後在命令提示字元輸入 paster create -t plone3_buildout C:\\Mybuildout便會開始建立一個專案,建立過程中會詢問幾個有關系統的問題:
C:\>paster create -t plone3_buildout Mybuildout
Selected and implied templates:
zopeskel#plone3_buildout A buildout for Plone 3 projects
Variables:
egg: Mybuildout
package: mybuildout
project: Mybuildout
Enter plone_version (Which Plone version to install) ['3.2.1']: 3
要建立Plone的哪個版本
Enter zope2_install (Path to Zope 2 installation; leave blank to fetch one) ['']:
Enter plone_products_install (Path to directory containing Plone products; leave blank to fetch one) ['']:
Enter zope_user (Zope root admin user) ['admin']:
系統管理者的名稱,預設為 admin
Enter zope_password (Zope root admin password) ['']:
輸入密碼,如果沒輸入會不能登入
Enter http_port (HTTP port) [8080]:
該專案使用的 port,預設為8080
Enter debug_mode (Should debug mode be "on" or "off"?) ['off']:
是否要啟動 debug_mode,預設為否
Enter verbose_security (Should verbose security be "on" or "off"?) ['off']:
沒提到的使用預設值即可,這樣就建立成功。
設定起始環境
在上述建立專案過程之後,會在該專案目錄裡,出現一些檔案,其中 bootstrap.py 檔案,是要建立 buildout 的目錄架構,並下載必要的 egg 檔案,可能需要數十秒的時間,請將命令提事字元切換到該目錄底下,並執行 python bootstrap.py,執行成功會像下圖:
下載與安裝
現在這個專案的雛形已經成形,一個Plone的架構已經出現在該專案目錄底下,接著便是執行buildout來下載與安裝Zope與Plone等軟體。請在該專案目錄裡面執行bin/buildout,請注意,如果你在bin下面執行 buildout.exe的話,會發現找不到 buildout.cfg的錯誤,因為 buildout.cfg在C:\\Mybuildout底下而不是在C:\\Mybuildout\\bin底下,所以不能在在C:\\Mybuildout\\bin下直接執行:
這是錯誤範例
出現 Installing zope2.才有正確執行
啟動Plone
啟動程式一樣也放在bin底下,名稱為 instance ,在命令提示字元輸入 bin\instance fg :
這時 Plone 已經啟動,打開瀏覽器輸入 http://localhost:8080 會看到 Zope Quick Start 的頁面,這樣一個 buildout 環境就建立成功了。
修改與更新
如果 buildout.cfg 檔案被修改,或是想將使用中的 egg 提昇至最新版本,都應該重新執行 ./bin/buildout 程式。如果不想花時間進行線上更新,可使用 offline 或 non-updating 模式,指令及參數如下:
$ bin/buildout -No
執行 buildout 生效後,可能會刪除 parts 目錄裡的部份檔案,但應該不會影響 Data.fs 或自己撰寫的原始碼檔案。
認識 buildout.cfg 內容
buildout.cfg 檔案是用來管理 Zope 與 Plone 的設定值,例如 HTTP 伺服器執行的埠號、管理員帳號密碼、新增模組等,它的內容包含數個設定區段,底下是我的buildout.cfg:
[buildout]
parts =
zope2
productdistros
instance
zopepy
extends = http://dist.plone.org/release/3.2.1/versions.cfg
versions = versions
find-links =
http://dist.plone.org/release/3.2.1
http://download.zope.org/ppix/
http://download.zope.org/distribution/
http://effbot.org/downloads
eggs =
develop =
[zope2]
recipe = plone.recipe.zope2install
fake-zope-eggs = true
additional-fake-eggs =
ZODB3
url = ${versions:zope2-url}
[productdistros]
recipe = plone.recipe.distros
urls =
nested-packages =
version-suffix-packages =
[instance]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/plone.recipe.zope2instance
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
user = admin:xiangyang
http-address = 8080
#debug-mode = on
#verbose-security = on
eggs =
Plone
${buildout:eggs}
zcml =
products =
${buildout:directory}/products
${productdistros:location}
[zopepy]
recipe = zc.recipe.egg
eggs = ${instance:eggs}
interpreter = zopepy
extra-paths = ${zope2:location}/lib/python
scripts = zopepy
內容中使用 # 符號開頭的皆為註解(本範例將其省略),大致分為[buildout] 、 [plone] 、 [zope2]三個區段 ,分別說明如下:
[buildout]
這是 buildout.cfg 檔案的起始點,在 parts 它會指定其他設定區段的名稱,例如 plone、zope2、productdistros、instance、zopepy 等,它們會在後面依序出現。每個 part 都會指定一個 recipe,它包含了執行特定工作的指令,像是如何設定 Zope instance 之類等。
在 find-links 則指定了幾個網址,是用來尋找要下載的 egg 檔案,不過 Cheese Shop 是一定會尋找的網址。
在 eggs 可以指定想要的擴充模組,像 plone.reload 是一個線上重啟系統的工具,而且設定時,還可以指定想要的版本,例如:
eggs =
elementtree
plone.reload>=0.8,<0.9dev
上例表示要使用 plone.reload 的 0.8 版,而不是 0.9 版。
[plone]
[plone] 是呼應 [buildout] parts 的設定區段,最簡化的設定值只包含 recipe = plone.recipe.plone 一行資料,這樣會下載最新版的 recipe,如果想要指定版本,同樣可用 plone.recipe.plone>=3.1,<3.2dev 之類的設定值。
當 recipe 被下載執行後,Plone 的模組程式會被安裝在 parts/plone 目錄裡。
[zope2]
最簡化的設定值是包含 recipe 和 url 兩項。如果在 paster 執行階段,指定既有的 Zope 安裝環境,那麼這個設定區段就會被省略。
當預設的 recipe 被下載執行後,Zope2 的模組程式會被安裝在 parts/zope2 目錄裡,而且 Zope Software Home 是指定在 parts/zope3/lib/python。
本文件參考 marr的 Working with buildout ,將其修改成 for windows版本
留言列表