在Python中作为插件的包

2024-04-26 23:21:49 发布

您现在位置:Python中文网/ 问答频道 /正文

通过可选包扩展python包的最佳方法是什么?你可以这样做:

pip install mypackage

或者:

pip install mypackage-option1

然后应用程序将执行以下操作:

from mypackage import somefunction

但是somefunction知道mypackage-option1的存在(如果安装了)。你知道吗

我见过一些通过插件系统实现的方法,但我需要满足一些要求:

  • Python 2.6+和3.2+。你知道吗
  • 零配置。你知道吗
  • mypackage不应显式使用mypackage-option1。(也就是说,如果将来我有mypackage-option2,它应该在不改变mypackage的情况下工作)
  • 使用mypackage的应用程序不需要导入mypackage-option1
  • 没有配置文件或列表存储在用户目录或其他任何地方。你知道吗

Tags: installpip方法fromimport插件应用程序列表
1条回答
网友
1楼 · 发布于 2024-04-26 23:21:49

如果插件包的名称总是以mypackage-开头(如果没有配置要求,您可能需要这样的约定),您可以执行以下操作:

import pkgutil
plugin_names = [
    name for (loader, name, ispkg) in pkgutil.iter_modules()
    if name.startswith('mypackage-')]

这将把包名作为字符串。然后可以使用__import__()动态导入模块。你知道吗

相关问题 更多 >