这似乎是一个直接的改变。将功能代码移动到子目录中。
我成功地重新创建了下面描述的代码,但是当我通过将$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()