Python中作为插件的包
通过可选包扩展python包的最佳方式是什么?我们的想法是,您可以这样:Python中作为插件的包,python,plugins,packaging,extending,Python,Plugins,Packaging,Extending,通过可选包扩展python包的最佳方式是什么?我们的想法是,您可以这样: pip install mypackage 或者: pip install mypackage-option1 然后,您的应用程序将执行以下操作: from mypackage import somefunction 但是somefunction知道如果安装了mypackage-option1 我见过一些通过插件系统实现这一点的方法,但我需要满足一些要求: Python 2.6+和3.2+ 零配置 mypackag
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
- 没有配置文件或列表存储在用户目录或其他任何位置
mypackage-
开头(如果没有配置要求,你可能需要这样的约定),你可以:
import pkgutil
plugin_names = [
name for (loader, name, ispkg) in pkgutil.iter_modules()
if name.startswith('mypackage-')]
这将得到作为字符串的包名。然后您可以使用
\uuuu import\uuuu()
动态导入模块。为什么不使用mypackage-option1 import somefunction中的?