我正在尝试构建自己的自定义加载项,以便以通用方式处理应用程序外部的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
添加了文件夹结构
答案 0 :(得分:0)
所以我在这里想出了自己的问题。文档在任何地方都没有提到这一点,但如果您没有将附加组件上传到注册表,只需将文件复制到目录中,首先必须安装它。对于那些熟悉python的人来说,这可能听起来不言自明,但我不是,所以对我来说不是。
以下命令将安装它,你应该好好去:
python setup.py install