如何快速安装蛋插件并在不重启应用的情况下加载它?
我正在创建一个应用程序,它可以下载并安装自己的插件,但我在加载插件时遇到问题,特别是在使用 easy_install 把插件解压到指定位置后。现在的工作流程是这样的:
- 应用程序将插件下载到临时文件夹
- 使用 setuptools.command.easy_install.main() 将插件安装到 ~/.app/plugins 文件夹(这个文件夹是通过 pth 文件在 dist-packages 中指向的)
- 此时,~/.apps/plugins/easy-install.pth 文件会更新为新的插件路径
问题是,pth 文件不会在 Python 进程重新启动之前被重新加载,这意味着应用程序必须停止并重新启动(而这个应用程序是一个长时间运行的进程,插件的安装不应该需要重启)。
所以我的问题是,如何才能以编程的方式重新加载 pth 文件,这样新插件的入口点才能被发现,或者有没有办法让 easy_install 返回它安装插件的路径,这样我就可以手动(使用 pkg_resources)加载新插件?
我可以创建一个函数来猜测 easy_install 的安装路径,或者自己解析 pth 文件,但如果可以的话,我更希望不这样做。
我使用的是 Python 2.6 和 setuptools 0.6c9
感谢 Marius Gedminas,我现在的做法基本上是:
dist = pkg_resources.get_distribution(plugin_name)
entry = dist.get_entry_info(entry_point_name, plugin_name)
plugin = entry.load()
1 个回答
5