如何easy_install egg插件并加载它而无需重新启动应用程序?

lkr*_*der 6 python egg setuptools

我正在创建一个下载并安装自己的egg插件的应用程序,但是在easy_install将其提取到位后,我在加载鸡蛋时遇到问题.这是它现在的工作方式:

  • App将egg下载到temp文件夹中
  • 将setuptools.command.easy_install.main()的egg安装到〜/ .app/plugins文件夹中(由dist-packages上的pth指向)
  • 此时,使用新的egg路径更新〜/ .apps/plugins/easy-install.pth

问题是在重新启动python进程之前不会重新加载pth,这意味着必须停止并重新启动应用程序(app是一个长时间运行的进程,并且插件安装不需要重新启动).

所以问题是如何以编程方式重新加载pth以便插件入口点发现适用于新蛋,或者以某种方式让easy_install返回它安装egg的路径,因此我可以手动(使用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()
Run Code Online (Sandbox Code Playgroud)

Mar*_*nas 5

在浏览了一些文档后,认为您需要做的是

pkg_resources.get_distribution(name).activate()
Run Code Online (Sandbox Code Playgroud)

其中 name 是您刚刚安装的软件包的名称。