2008-11-20 88 views
5

如何爲使用pyInstaller,py2exe或類似工具創建的獨立可執行文件創建良好的插件引擎?爲python獨立可執行文件創建插件

我沒有使用py2exe的經驗,但pyInstaller使用導入鉤子從它的壓縮存儲庫導入包。當然,我可以動態導入另一個使用pyInstaller創建的壓縮存儲庫並執行代碼 - 這可能是一個簡單的插件引擎。

當插件(這是動態導入的)使用原始存儲庫(從未導入)中不存在的庫時,會出現問題。這是因爲導入鉤子是針對原始應用程序的,並且在原始存儲庫中搜索包,而不是稍後導入的包(插件包存儲庫)。

有沒有簡單的方法來解決這個問題?也許存在這樣的引擎?

回答

3

當編譯爲exe時,你會遇到這個問題。

我能想到的允許用戶使用他們的插件訪問任何python庫的唯一選擇是將所有庫包含在exe包中。

將受支持的庫限制爲子集可能是一個好主意,並將其列在您的文檔中。由你決定。

我只使用py2exe。

在py2exe中,您可以指定在setup.py文件的搜索中找不到的庫。

下面是一個示例:

from distutils.core import setup 
import py2exe 

setup (name = "script2compile", 
     console=['script2compile.pyw'], 
     version = "1.4", 
     author = "me", 
     author_email="[email protected]", 
     url="myurl.com", 
     windows = [{ 
        "script":"script2compile.pyw", 
        "icon_resources":[(1,"./ICONS/app.ico")] # Icon file to use for display 
       }], 
     # put packages/libraries to include in the "packages" list 
     options = {"py2exe":{"packages": [ "pickle", 
              "csv", 
              "Tkconstants", 
              "Tkinter", 
              "tkFileDialog", 
              "pyexpat", 
              "xml.dom.minidom", 
              "win32pdh", 
              "win32pdhutil", 
              "win32api", 
              "win32con", 
              "subprocess", 
             ]}} 

     ) 

import win32pdh 
import win32pdhutil 
import win32api 
1

PyInstaller 確實有用於處理隱藏的進口,並附帶數那些已經在插件系統查看哪些說的網頁(http://www.pyinstaller.org):

PyInstaller的主要目標是與即開即用的第三方軟件包兼容。這意味着,使用PyInstaller,所有使外部軟件包工作所需的技巧已經集成在PyInstaller本身中,因此不需要用戶干預。您永遠不需要在維基中尋找技巧,並將自定義修改應用於您的文件或安裝腳本。檢查SupportedPackages的兼容性列表。

+0

我在想我的獨立應用程序的插件系統。我用pyInstaller創建了應用程序。我想爲這個應用程序創建插件。問題在於插件導入的東西在原始應用程序中未導入 - 導入失敗。 – uhz 2009-06-08 19:27:37

相關問題