为python独立可执行文件创建插件
问题描述:
如何为使用pyInstaller,py2exe或类似工具创建的独立可执行文件创建良好的插件引擎?为python独立可执行文件创建插件
我没有使用py2exe的经验,但pyInstaller使用导入钩子从它的压缩存储库导入包。当然,我可以动态导入另一个使用pyInstaller创建的压缩存储库并执行代码 - 这可能是一个简单的插件引擎。
当插件(这是动态导入的)使用原始存储库(从未导入)中不存在的库时,会出现问题。这是因为导入钩子是针对原始应用程序的,并且在原始存储库中搜索包,而不是稍后导入的包(插件包存储库)。
有没有简单的方法来解决这个问题?也许存在这样的引擎?
答
当编译为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
答
PyInstaller 确实有用于处理隐藏的进口,并附带数那些已经在插件系统查看哪些说的网页(http://www.pyinstaller.org):
PyInstaller的主要目标是与即开即用的第三方软件包兼容。这意味着,使用PyInstaller,所有使外部软件包工作所需的技巧已经集成在PyInstaller本身中,因此不需要用户干预。您永远不需要在维基中寻找技巧,并将自定义修改应用于您的文件或安装脚本。检查SupportedPackages的兼容性列表。
我在想我的独立应用程序的插件系统。我用pyInstaller创建了应用程序。我想为这个应用程序创建插件。问题在于插件导入的东西在原始应用程序中未导入 - 导入失败。 – uhz 2009-06-08 19:27:37