python - FAB自定义加载项创建和安装

时间:2018-05-22 10:05:57

标签: python flask-appbuilder

我正在尝试构建自己的自定义加载项,以便以通用方式处理应用程序外部的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

添加了文件夹结构

1 个答案:

答案 0 :(得分:0)

所以我在这里想出了自己的问题。文档在任何地方都没有提到这一点,但如果您没有将附加组件上传到注册表,只需将文件复制到目录中,首先必须安装它。对于那些熟悉python的人来说,这可能听起来不言自明,但我不是,所以对我来说不是。

以下命令将安装它,你应该好好去:

python setup.py install