在 Windows 平台編譯 Zope 


遠凡札記 Yuanfarn's Notes

by [六翼。小雷龍] 遠凡 <shauhung at gmail.com>

最後修改日期:Apr. 8, 2007

一般來說,在 Windows 平台使用 Zope 只要下載 binary installer 來安裝就可以了,不過由於最新版本的 Zope 往往會一段時間才釋出 binary installer,所以如果你想嘗試新版的 Zope,試著自己編譯 Zope 也是一種選擇。

這篇文章以 Zope 2.10.3 為例,先來看看編譯 Zope 前要知道些什麼:

  1. Zope 2.10.3 採用 Python 2.4.4;
  2. Python 2.4.4 的 binary installer (python-2.4.4.msi) 是使用 Microsoft Visual C++ 2003 編譯的;
  3. 需要 Python's Windows extensions (http://sourceforge.net/projects/pywin32/)。

這樣大概知道需要準備那些東西了,現來開始編譯前的準備工作吧!

準備工作:

  1. 首先當然是要先下載 Zope 2.10.3 的源碼囉!自 http://zope.org/ 下載 Zope 2.10.3 的源碼檔案 Zope-2.10.3-final.tgz,下載完畢後,解開壓縮檔,先閱讀 README.txtdoc/INSTALL.txtdoc/WINDOWS.txt 這三個檔案。

  2. http://www.python.org/ 下載 Python 2.4.4 的 binary installer (python-2.4.4.msi) 回來安裝。

    接著到 http://sourceforge.net/projects/pywin32 下載 Python's Windows extensions,這裡必須注意使用的 Python 版本,以下載 Build 210 這個版本為例,這裡要下載 pywin32-210.win32-py2.4.exe 這個檔案,這才是給 Python 2.4 使用的。

    假設在安裝完 Zope 後,你要繼續安裝 Plone 3.0,那麼建議你先到 Python Imaging Library (PIL)ElementTree toolkit 的網站下載 PIL 1.1.6 及 ElementTree toolkit 1.2.6 回來安裝,這裡分別下載 Python Imaging Library 1.1.6 for Python 2.4 (Windows only, PIL-1.1.6.win32-py2.4.exe) 和 lementtree-1.2.6-20050316.win32.exe

  3. 最後這一個項目非常重要,那就是 Microsoft Visual C++ 2003,根據 Google 爬文得來的資料,不只是 Python 2.4,連 Python 2.5 都還是使用 Visual C++ 2003 來編譯的。要安裝 Visual C++ 2003,你最少需要一套 Microsoft Visual C++ .NET Standard 2003,這就需要向微軟 (Microsoft) 在各地的經銷商洽詢如何購買了。

    如果你不打算購買 Microsoft Visual C++ .NET 2003,那你可以試試微軟釋出的 Microsoft Visual C++ Toolkit 2003[1] ,這是微軟授權使用者可以免費下載、使用的。只是……它的官方網頁已經由 Visual C++ 2005 Express Edition 取代 Visual C++ Toolkit 2003 了,然而使用者還是可以利用 Google 等搜尋引擎找找 VCToolkitSetup.exe 這個檔案,應該還能找到下載點的,此外,它的 MD5SUM 為 90d8b963ca196aa9855b2ca6c3174c14。 [1]

編譯 Zope:

在 Windows 平台編譯的方法在 doc/WINDOWS.txt 這個說明裡寫得很清楚了。

開啟“命令提示字元”視窗,執行 python.exe inst\configure.py 這個動作,此外你也可以用 configure.py --help 來看看有那些參數設定可以變更的。例如,Zope 2.10.3 的預設安裝路徑為 C:\Zope-2.10,你可以用 python.exe inst\configure.py --prefix=C:\Zope2.10.3 來將它更改為 C:\Zope\2.10.3 這個路徑。

當 python.exe instconfigure.py 執行完畢後,接著執行 VCVARS32.batnmake[2]

接著再執行 nmake install,你應該會看到類似 Zope binaries installed successfully. 的訊息,這表示 Zope 已經編譯完成並安裝成功了。

然後只要執行 python.exe {install_path}\bin\mkzopeinstance.py 建立一個 Zope Instance 目錄。

再來修改 {instance_path}\bin\runzope.bat 這個檔案裡的 Python 路徑,就可以啟動 Zope 了。

好了,編譯 Zope 及安裝的動作到這裡就算大功告成了。

[1](1, 2)

Microsoft Visual C++ Toolkit 2003 安裝好後找不到 nmake 這支程式,這是最讓我莫名其妙的問題。

由“微软的免费 C++ 编译器”及“研究几个C/C++编译器”這兩篇文章的內容,VCToolkitSetup.exe 這個檔案的 MD5SUM 值為 90d8b963ca196aa9855b2ca6c3174c14,第二篇文章還提供了兩個下載點,分別是:

我另外找到一個下載點為 http://tinyurl.com/2224xa ,這裡下載的檔案在檢查 MD5SUM 後也和上值一樣。

然而在 這一個 FTP Mirror Search 找到的 VCToolkitSetup.exe 的 MD5SUM 卻是 3e1e1cad2e4b4e2427dbe4616cccaa02 。

[2]

執 行 nmake 時,當編譯到

lib\python\Products\PluginIndexes\
TextIndex\Splitter\ISO_8859_1_Splitter\src\ISO_8859_1_Splitter.c

這個檔案時,出現如下的錯誤:

Error Message of nmake

於是我用 Notepad++ 開啟了 ISO_8859_1_Splitter.c 這個檔案,看到第 20 到 22 這三行如下:

ISO_8859_1_Splitter.c

嗯……看來可能是某些非 ASCII 字元的問題,我再用 Firefox 開啟這個檔案卻是:

ISO_8859_1_Splitter.c

我將這個檔案變更為 UTF-8 編碼 (檔頭沒有“BOM”),再執行一次 nmake,仍然得到同樣的錯誤,於是我乾脆將它改為

#define UPPERCASE "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
#define LOWERCASE "abcdefghijklmnopqrstuvwxyz"
#define DIGITSETC "0123456789-"

再執行 nmake 就能通過編譯了,不過 Tiberius Teng <tiberius.teng at gmail.com> 在 Python.tw 郵件列表上提到這樣做可能會讓轉碼表“炸”了。

Tiberius Teng 另外也提醒 Visual C++ 2003 處理的 Unicode 源碼必須有“BOM”檔頭,所以我將 ISO_8859_1_Splitter.c 這個檔案確實存成有“BOM”檔頭的檔案後再執行一次 nmake,這回也順利通過編譯了。

splitter04.jpg