我正在尝试构建自己的自定义插件,以便以通用方式处理我的应用程序外部的 OAuth 登录。
我已阅读有关实施 OAuth的文档,以及有关创建附加组件的文档。如果我将代码破解到应用程序中(没有附加组件),我的代码就可以工作,但我不想要这个。我希望它可以简单地包含代码并在我的 config.py 中设置一个变量来使用它。这就是我尝试附加组件的原因。
我将我在应用程序中工作的代码移到了插件中。我使用 fabmanager 为我生成骨架,然后修复了我的代码所在的 model.py 文件和配置文件。然后,根据文档,我在我的主应用程序的 config.py 文件中添加了以下行,以告诉它使用我的附加组件。
ADDON_MANAGERS = ['fab_addon_x.manager.X']
但是,这不起作用。我收到“ModuleNotFoundError”。
File "/usr/local/lib/python3.6/site-packages/flask_appbuilder/base.py", line 30, in dynamic_class_import
package = __import__(module_path)
ModuleNotFoundError: No module named 'fab_addon_x'
我已将附加代码都放在与主项目相同的级别:
/myapp/
/fab_addon_x/
在主项目内部:
/myapp/
/myapp/fab_addon_x/
这些都不起作用。
完整的文件夹结构
/usr/local/lib/python3.6/site-packages/myapp/
- __init__.py
- __pycache__
- bin
- cache_util.py
- cli.py
- config.py
- connectors
- data
- dataframe.py
- db_engine_specs.py
- db_engines
- dict_import_export_util.py
- extract_table_names.py
- forms.py
- import_util.py
- jinja_context.py
- legacy.py
- migrations
- models
- security.py
- sql_lab.py
- sql_parse.py
- static
- stats_logger.py
- templates
- translations
- utils.py
- views
- viz.py
我已经将附加文件夹放置在这一层和上一层。附加文件夹结构:
fab_addon_x
- README.rst
- config.py
- fab_addon_x
- __init__.py
- manager.py
- models.py
- templates
- translations
- version.py
- views.py
- run.py
- setup.py
是否有特定的方法来注册我的附加组件?或者这是一个我似乎无法弄清楚的直截了当的参考问题?
编辑 1
将“ADDON_MANAGERS = ['fab_addon_first.manager.FirstAddOnManager']”更改为现在的样子。
编辑 2
添加文件夹结构