2010年10月3日 星期日

在py2exe包裝後的執行環境下執行python檔案

py2exe可以將python檔案包裝成獨立執行檔,便可在不安裝python interprter的環境下獨立執行。
然而每次執行py2exe包裝總得花上許多時間,如果能將時常變動的程式包裝成獨立的python檔案,並且在每次修改後都能直接加入包裝內,便可減少頻繁修改後的再次包裝,甚至此經常修改的部分可以讓使用者自行修改,以滿足實際需求。

py2exe包裝後,將python檔案放入library.zip內,可以在此找到原先的模組結構。雖然它將python文字檔編譯成pyc檔,但仍然可以將原先的文字檔放入並刪除pyc檔,這時候便會執行放入的文字檔。
 但在library.zip的文字檔無法直接打開修改。此外,跟著原先的模組取代,對使用者而言似乎不是這麼直覺,如果能在一個單純的資料夾下的固定檔案放置檔案,應該可以更容易使用。

如果將文字檔直接擺在library.zip之外的地方,會遇到無法找到模組的錯誤。這是因為py2exe包裝之後,sys.path內僅看得到"library.zip"。加入模組路徑之後即可解決。以下是簡單的程式碼示意,將根目錄加入sys.path。

        import sys
        # dist mode
        if len(sys.path)==1:
            path = sys.path[0]
            distDir = "library.zip"
            index = -1*len(distDir)
            if path[index:] == distDir:
                rootPath = path[:index]
                sys.path.append(rootPath)

沒有留言: