0

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

添加文件夹结构

4

1 回答 1

0

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

下面的命令将安装它,你应该很高兴:

python setup.py install
于 2018-06-07T11:43:28.017 回答