如何easy_install egg插件并在不重新启动应用程序的情况下加载它?
我正在创建一个下载并安装自己的egg插件的应用程序,但是在easy_install将鸡蛋提取到位后加载鸡蛋时出现问题。现在是这样的:
- 应用程序将鸡蛋下载到临时文件夹中
- 使用setuptools.command.easy_install.main()将egg安装到〜/ .app / plugins文件夹(由dist-packages上的pth指向)
- 此时,〜/ .apps / plugins / easy-install.pth将使用新的egg路径进行更新
问题在于,在重新启动python进程之前,不会重新加载pth,这意味着必须停止并重新启动该应用程序(该应用程序是一个长期运行的进程,并且插件安装不需要重新启动)。
因此,问题是如何进行编程,要么以编程方式重新加载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()