2008-11-20 89 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

相关问题