Python - пользовательское дополнение FAB создает и устанавливает

sj.meyer спросил: 28 апреля 2018 в 08:25 в: python

Я пытаюсь создать собственное пользовательское дополнение для того, чтобы обращаться к внешнему ядру 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

Добавлена ​​структура папок


1 ответ

Есть решение
sj.meyer ответил: 14 мая 2018 в 10:03

Итак, я понял свою проблему здесь. Документы не упоминают об этом нигде, но если вы не загружаете надстройку в реестр и просто скопируете файлы в каталог, вам сначала нужно его установить. Это, вероятно, кажется само собой разумеющимся для тех, кто знаком с python, но я не, так что это было не для меня.

Нижеприведенная команда установит его, и вам должно быть хорошо идти:

python setup.py install