python - FAB 自定义加载项创建和安装
python - FAB custom add-on create and install
我正在尝试构建自己的自定义附加组件,以便以通用方式处理我的应用程序外部的 OAuth 登录。
我已阅读 the documentation on implementing OAuth, as well as 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
已添加文件夹结构
所以我在这里找到了我自己的问题。文档在任何地方都没有提到这一点,但是如果您不将附加组件上传到注册表而只是将文件复制到目录中,您首先必须安装它。对于熟悉 python 的人来说,这听起来可能不言自明,但我不是,所以它不适合我。
下面的命令将安装它,您应该可以开始了:
python setup.py install
我正在尝试构建自己的自定义附加组件,以便以通用方式处理我的应用程序外部的 OAuth 登录。
我已阅读 the documentation on implementing OAuth, as well as 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
已添加文件夹结构
所以我在这里找到了我自己的问题。文档在任何地方都没有提到这一点,但是如果您不将附加组件上传到注册表而只是将文件复制到目录中,您首先必须安装它。对于熟悉 python 的人来说,这听起来可能不言自明,但我不是,所以它不适合我。
下面的命令将安装它,您应该可以开始了:
python setup.py install