2012-04-02 40 views
2

在以下情況下尋找一些建議和最佳實踐指導。我有一個從源代碼運行幷包含所有依賴關係的python應用程序。當使用PIL時會出現一些問題。不同的Python版本需要不同的PIL源,64位和32位需要不同的版本。在多個系統上使用PIL

我們已經決定,我們希望支持:

的Python 2.4 64位

的Python 2.4 32位

Python 2.7版64位

Python 2.7版32位

我會必須找到必要的源代碼包並將它們全部包含在內。問題是導入它們的最好方法是什麼?我是否會檢查python版本和操作系統版本,並根據該版本導入不同的PIL版本(如果您還可以導入其他東西?或者我可以導入一次?

希望大家都有道理。謝謝

回答

2

我打算採用@ alan的答案的相反方向,不建議你甚至分發你的4個硬編碼環境。

如果您直接分發源代碼,那麼您根本不應該包括預構建的依賴關係。創建某種setup.py來下載和安裝依賴關係。或者考慮將您的應用打包成一個自包含的可執行文件

您的軟件包可能包含PIL的本地安裝文件,因此不需要下載,但它們應該由實際的最終用戶構建以匹配其體系結構。試圖讓你的應用程序把所有這些都指出來,並指向許多預編譯包之一是毫無意義的。

如果您想要爲包含其整個環境的不同系統創建自解壓縮包的路徑,還可以查看py2exe,py2app和pyinstaller。

0

你聽說過virtualenv嗎? http://pypi.python.org/pypi/virtualenv

從您聲明的要求,我相信它會做你所需要的。它是專門爲解決針對不同版本的Python以及爲每個版本安裝的不同軟件包而安裝和維護不同環境的問題而創建的。

看看它是否滿足您的需求,但我相信您需要兩個不同的盒子(或VM)來分隔32位和64位環境。

無論如何,一旦你建立了四個環境,你只需激活一個環境,並且在該環境中運行的Python代碼中的import PIL語句將得到合適的庫。

+0

我看到我沒有仔細閱讀你的問題。下面有@jdi有更好的答案。 virtualenv不會幫助你將應用程序分發給其他人。這是我分開的部分。 – alan 2012-04-02 22:15:02

+1

我仍然認爲virtualenv是最終用戶的好主意。該軟件包可能有一個pip requirements.txt文件和一些簡單的指令來快速創建virtualenv,將其激活,並使用'pip install -r requirements.txt'來構建和安裝依賴項(PIL) – jdi 2012-04-02 23:23:32