当前位置: 首页 > 面试题库 >

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

漆雕令秋
2023-03-14
问题内容

我正在创建一个下载并安装自己的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()

问题答案:

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

pkg_resources.get_distribution(name).activate()

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



 类似资料:
  • 我读了几个类似的问题,这似乎是我能做的最好的。是否可以在dist上启用实时重新加载而无需完全重新启动应用程序? 顺便说一下,我的IDE是IntelliJ。我开始怀疑IntelliJ是否需要排除dist目录。如果是这样的话我会跟进的。

  • 问题内容: 如何在不重新启动servlet容器的情况下刷新Spring配置文件? 我正在寻找JRebel以外的解决方案。 问题答案: 对于那些最近在这上面绊脚石的人来说,解决此问题的当前和现代方法是使用Spring Boot的Cloud Config。 只需添加注释你刷新豆类和你的主/配置。 因此,例如,以下Controller类: 在Spring Boot Actuator上(通过HTTP端点或

  • 我有一个Spring Boot应用程序,它可以根据特定条件将外部JAR文件复制到文件夹中。这些JAR可以包含许多Spring组件(即用注释或元注释的类),Spring应用程序应该能够扫描和实例化这些bean。根据某些条件,是否可以动态加载JAR文件的内容,并使它们可用于Spring应用程序上下文?我充分意识到这对安全的影响。 我已经阅读了Spring为其可执行JAR格式提供的不同类型的和,但是看起

  • 我们正在使用JBoss Enterprise Application Platform server(即JBoss EAP 6.1)来开发使用Logback进行日志记录的新web应用程序。我们已经使用JBoss EAP好几个月了,一切都很好。此外,正如您所知,您可以在运行时在JBOSS上部署和取消部署应用程序和配置文件(如mail service.xml),也就是说,无需重新启动服务器。 但是,如

  • 当我在一个节点上做了一个紧凑的工作时,它会抛出以下例外情况:

  • 我有一个用户名列表,用户名列表根据用户输入的数量而增加。问题是,当用户输入用户名时,列表会被输入填充,只有当我的页面重新加载时,我的页面才会更新。这是我迄今为止尝试过的代码。 我无法在外页重新加载的情况下更新数据。请建议我如何更新ui:在外页重新加载的情况下重复数据。提前谢谢。

  • 问题内容: 我的速度宏正在缓存中,我不希望它们存在……至少不在开发过程中。 我在属性文件中设置了以下属性… …但这似乎并没有解决问题 使用速度属性,如何配置速度以不缓存宏? (我正在使用速度1.6.4) 编辑: 我不认为这条线… …与速度有关 问题答案: 我一直在NVelocity(速度的C#端口)遇到相同的问题。深入研究它们的来源,我发现全局名称空间中宏的重新加载由以下属性控制。 我没有用速度进

  • 我有一个kubernetes集群,安装了保险库(通过头盔图表)。 我想将机密从vault填充到pod中的文件(例如nginx),并每5分钟刷新一次机密。 我使用以下配置对其进行了测试(使用适当的vault策略/后端身份验证): namespace.yaml Service_account.yaml nginx-deployment.yaml 当我将此配置应用于kubernetes集群时,将创建部署