Как импортировать gflags в веб-приложение Python (Google App Engine)?

Я хочу использовать Google Calendar API для своего веб-приложения Google App Engine. Я следовал приведенным здесь инструкциям (https://developers.google.com/google-apps/calendar/instantiate) для настройки приложения, которое требовало импорта gflags. Я скачал gflags здесь (https://code.google.com/p/python-gflags/downloads/list) и разархивировал его в тот же каталог, что и main.py моего веб-приложения. Затем я настроил gflags, запустив Python setup.py install в командной строке. Настройка прошла успешно, и появилось следующее:

Установлен c:\python27\lib\site-packages\python_gflags-2.0-py2.7.egg

Зависимости обработки для python-gflags==2.0

Завершена обработка зависимостей для python-gflags==2.

Но эта строка все еще не работает:

 import gflags

Я получаю следующую ошибку в журнале:

NotImplementedError: Для использования tools.run() необходимо установить библиотеку gflags. Пожалуйста, установите gflags или переключитесь на использование tools.run_flow()

Но я думал, что уже установил gflags? Я также не понимаю, почему setup.py создал яйцо Python в моей папке c:\python27\lib, значит ли это, что Google App Engine не сможет получить к нему доступ?


person laurenzlong    schedule 09.12.2013    source источник
comment
Откуда вы скачали python_gflags-2.0-py2.7.egg?   -  person rdodev    schedule 10.12.2013
comment
code.google.com/p/python-gflags/downloads/list   -  person laurenzlong    schedule 10.12.2013


Ответы (1)


Вы на правильном пути, но процедура установки Python вас сбивает с толку; это плохо работает с GAE.

Когда вы развертываете приложение в GAE, оно загружает всю папку вашего проекта на серверы GAE. Все ваши библиотеки должны находиться в папке вашего проекта, иначе они будут отсутствовать при работе на серверах GAE.

Однако когда вы устанавливаете библиотеку Python, она обычно находится в устанавливаемом пакете с фактической библиотекой, а также с некоторым кодом установщика, тестовым кодом и т. д. Фактический код библиотеки обычно находится в подпапке того, что на самом деле распаковано. Запуск установки копирует библиотеку в вашу глобальную библиотеку Python, что бесполезно для GAE.

Итак, что вам нужно сделать, это скопировать саму библиотеку gflags в папку вашего проекта GAE. Я быстро взглянул, и я предполагаю, что все, что вам действительно нужно, это скопировать gflags.py и gflags_validators.py из яйца в папку вашего проекта GAE. Остальное оказывается ненужным.

person dragonx    schedule 09.12.2013