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下載回來安裝

m1-1.png

安裝 MinGW的方式與一般windows的程式一樣,按照預設一直按下一步即可,要注意的有安裝路徑為 C:\MinGW,預設安裝是最簡安裝,建議改成 Full 完整安裝。還有就是安裝程式會使用網路下載所需要的檔案,所以請確認主機可以上網:
  

安裝畫面

m1-2.png


在這裡改成 Full安裝

m1-3.png


程式的安裝目錄

m1-4.png


2.安裝完成後到 C:\MinGW\libexec\gcc\mingw32\3.4.5 目錄把 cc1.exe 和 collect2.exe 複製到 C:\MinGW\bin 目錄裡

複製這兩個檔案

m2-1.png

3.請 到此  下載 libpython24.a 放到 C:\MinGW\lib 目錄,再把 C:\MinGW\bin 加到系統環境變數 PATH 裡。


點選下載 libpython24.a

m3-1.png


將 libpython24.a放到 C:\\MinGW\\lib 目錄下

m3-2.png


設定環境變數

m3-3.png


4.接著打開命令提示字元,輸入 gcc --version 測試是否成功

m4-1.png


5.接著要通知 Python 的 distutils 已可以使用 MinGW,以 Plone 安裝在 C:\\Plone3 目錄為例,要到 C:\\Plone3\\python\\Lib\\distutiles 目錄裡建立 distutils.cfg 檔案,distutils.cfg檔案內容如圖所示:

m5-1.png

這樣就完成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

1-1.png


2. 輸入 python easy_install-script.py -U ZopeSkel並執行

1-2.png


3. 成功之後 C:\\Plone3\\python\\Scripts就會出現幾個檔案,如下圖


1-3.png


4. 接著測試 paster是否可正常執行,輸入 paster create --list-template,若出現以下結果代表正常

1-4.png


安裝完上述工具軟體之後,還必須把 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,執行成功會像下圖:

2-1.png


下載與安裝

現在這個專案的雛形已經成形,一個Plone的架構已經出現在該專案目錄底下,接著便是執行buildout來下載與安裝Zope與Plone等軟體。請在該專案目錄裡面執行bin/buildout,請注意,如果你在bin下面執行 buildout.exe的話,會發現找不到 buildout.cfg的錯誤,因為 buildout.cfg在C:\\Mybuildout底下而不是在C:\\Mybuildout\\bin底下,所以不能在在C:\\Mybuildout\\bin下直接執行:


這是錯誤範例

3-1.png


出現 Installing zope2.才有正確執行


3-2.png


啟動Plone


啟動程式一樣也放在bin底下,名稱為 instance ,在命令提示字元輸入 bin\instance fg :


4-1.png


這時 Plone 已經啟動,打開瀏覽器輸入 http://localhost:8080 會看到 Zope Quick Start 的頁面,這樣一個 buildout 環境就建立成功了。


4-2.png


修改與更新


如果 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版本


f
創作者介紹
創作者 xiangyang17 的頭像
xiangyang17

xiangyang17

xiangyang17 發表在 痞客邦 留言(1) 人氣()


留言列表 (1)

發表留言
  • boki2009
  • 哇~~這一連串的黑豆苗,讓我~~~眼花掉。
    所以你是程式高手嗎?有問題可以問你嘍?
  • 我不是程式高手ㄟ 上面這些是設定檔內容
    不過可以一起討論^^

    xiangyang17 於 2009/04/08 13:04 回覆