如何easy_install egg插件并在不重新启动应用程序的情况下加载它?

发布于 2021-01-29 15:25:00

我正在创建一个下载并安装自己的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()
关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    浏览了文档之后,认为 您需要做的是

    pkg_resources.get_distribution(name).activate()
    

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看