Совместное использование пакета 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 в каждый модуль ядра приложения.