如何为使用pyInstaller,py2exe或类似工具创建的独立可执行文件创建一个好的插件引擎?
我没有使用py2exe的经验,但是pyInstaller使用导入钩子从它的压缩存储库导入包.当然,我能够动态导入另一个用pyInstaller创建的压缩存储库并执行代码 – 这可能是一个简单的插件引擎.
当插件(这是动态导入的)使用原始存储库中不存在的库(从未导入)时出现问题.这是因为import hook用于原始应用程序并在原始存储库中搜索包 – 而不是稍后导入的包(插件包存储库).
最佳答案
编译到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="somemail@me.com",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