在添加到__all__的模块中运行函数还需要什么

时间:2018-06-17 23:22:50

标签: python

这似乎是一个直接的改变。将功能代码移动到子目录中。

我成功地重新创建了下面描述的代码,但是当我通过将$config = [ // \Yii::t('app.name', 'My Application Name') 'name' => 'My Application Name', // ... ]; 目录放在树下一层来改变示例时,我收到了以下错误:

./plugins

在目录更改后更新我的代码,

1)从module 'main' has no attribute 'handle_pony' 导入我添加了点语法:./main.py

2)在新的子目录中添加了空from app_config.plugins import *个文件。

更新模块还需要什么,以便__init__.py可以按照描述调用?我缺少什么Python概念?

我正在努力创建一个带有动态加载插件系统的模块,如下所述:Dispatcher Pattern Safety

这是我的基本树,我将插件移动到子文件夹run()

app_config

原始示例(链接)将模块加载到./main.py ./__init__.py (empty) ./app_config/__init__.py (empty) ./app_config/plugins ./app_config/plugins/__init__.py (sets __all__) ./app_config/plugins/handle_pony.py 中的__all__

plugins/__init__.py

该插件正如链接博客文章中所描述的那样工作,并且正确的插件在错误中命名为# FILE ./plugins/__init__.py # Moved to ./app_config/plugins/__init__.py import os, glob # REMOVED __all__ FROM ORIGINAL POST modules = glob.glob(os.path.join(os.path.dirname(__file__), 'handle_*.py')) __all__ = [ os.path.basename(f)[:-3] for f in modules if os.path.isfile(f) and not f.endswith('__init__.py')] 。尽管如此调用handler_pony仍然失败:

run()

类似文章Python module and __all__

0 个答案:

没有答案