Совместное использование пакета python между модулями appengine

У меня есть 3 модуля appengine, скажем, modA (модуль по умолчанию содержит app.yaml), modB и modC, которые совместно используют сущности хранилища данных и некоторые служебные функции и внешние библиотеки в "общем" каталоге, как показано ниже:

- modA
  - app.yaml
  - appengine_config.py
- modB
  - modB.yaml
  - appengine_config.py
- modC
  - modC.yaml
  - appengine_config.py
- common
  - __init__.py

Чтобы поделиться "общим" среди модулей, я создал файл appengine_config.py со следующим кодом:

#!/usr/bin/env python

import sys
import os
import logging

logging.info("LOADING CONFIG FILE")

PARENT_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.insert(0, os.path.join(PARENT_DIR, 'common'))

logging.info(sys.path)

В консоли он показывает 'common' в sys.path, но все равно не может распознать модуль при использовании операторов import.

Пожалуйста, дайте мне знать, как это исправить. Также есть ли лучший способ сделать это?

1 ответ

Решение

Все файлы приложения, которые вы хотите развернуть, должны находиться в том же каталоге, что и app.yaml. Итак, что вы, вероятно, хотите сделать, это создать папку символической ссылки под каждой из папок вашего модуля, которая указывает на /common

- modA
  - app.yaml
  - common -> ../common
- modB
  - modB.yaml
  - common -> ../common
- modC
  - modC.yaml
  - common -> ../common
- common
  - __init__.py

Обновление appcfg.py будет следовать символическим ссылкам и загружать модуль /common в каждый модуль ядра приложения.

Другие вопросы по тегам