【发布时间】:2018-06-07 19:43:28
【问题描述】:
我正在尝试构建自己的自定义插件,以便以通用方式处理我的应用程序外部的 OAuth 登录。
我已经阅读了关于实现 OAuth 的 the documentation,以及关于创建附加组件的 the documentation。如果我将代码破解到应用程序中(没有附加组件),我的代码就可以工作,但我不想要这个。我希望它可以简单地包含代码并在我的 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
添加文件夹结构
【问题讨论】:
-
嗨,您的意思是
ADDON_MANAGERS = ['fab_addon_x.manager.FirstAddOnManager']?如果您仍然遇到此问题,您可以分享您的文件夹结构。到目前为止,看起来你应该有 fab_addon_x 而不是 fab_addon_first -
嗨@nevi_me,我从文档页面复制了该行,而不是我自己的文件。它更接近于复制。很抱歉造成混乱,我会编辑并更正它。还将添加文件夹结构。