我正在用 python 编写一个应用程序,它将用 py2exe 导出到一个可执行文件。我正在尝试编写一个插件系统,该系统在应用程序是 exe 时可以工作。
我的原始代码看起来像
import os
Plugins=os.listdir('plugins')
for P in Plugins:
PItems=os.path.splitext(P)
PName=PItems[0]
if PItems[len(PItems)-1]=='.py':
Mod=__import__('plugins.'+PName,fromlist=['*'])
Mod.init()
但是当导出到 exe 时,它在尝试导入时找不到模块“plugins.(pluginName)”。
插件还应该能够导入 my_application 以访问应用程序 api。
mcEdit(用python编写)和Sublime Text(不确定)可以做到这一点,但尽管搜索了源代码,但我找不到如何做到的。
如何编写导出到 exe 时可以使用的东西?
编辑: 澄清
- 插件应在应用程序加载时自动加载。它们存储在
plugins/
目录中 - 插件应该能够与应用程序交互,
import myapplication
然后运行 api 调用,例如myapplication.getFoo()
或myapplication.setBar(Bar)
- 这些插件可以运行一次,也可以在鼠标单击或移动之类的事件上运行,甚至可以在每次绘制屏幕时运行。我希望他们在应用程序运行时保持其状态(变量值、对象等)。