我正在创建一个下载并安装自己的 egg 插件的应用程序,但是在 easy_install 将其解压缩到位后加载 egg 时出现问题。这就是它现在的工作方式:
- 应用程序将鸡蛋下载到临时文件夹中
- 使用 setuptools.command.easy_install.main() 将 egg 安装到 ~/.app/plugins 文件夹(由 dist-packages 上的 pth 指向)
- 此时,~/.apps/plugins/easy-install.pth 更新为新的 egg 路径
问题是 pth 直到 python 进程重新启动才重新加载,这意味着必须停止并重新启动应用程序(应用程序是一个长时间运行的进程,并且插件安装必须不需要重新启动)。
所以问题是如何以编程方式重新加载pth,以便插件入口点发现适用于新的egg,或者以某种方式让easy_install返回它安装egg的路径,所以我可以手动(使用pkg_resources)加载新插件?
我可以创建一个函数来尝试猜测 easy_install 的路径或自己解析 pth,但如果可能的话,我宁愿不这样做。
Python 2.6,安装工具 0.6c9
感谢Marius Gedminas,我现在所做的基本上是:
dist = pkg_resources.get_distribution(plugin_name)
entry = dist.get_entry_info(entry_point_name, plugin_name)
plugin = entry.load()