2015-05-18 2 views
1

У меня есть программа Google App Engine в ROOT-DIR и virtualenv с несколькими библиотеками, включая sqlalchemy, в ROOT-DIR/env. я пытаюсь запустить мою программу с помощью сервера Дев, делая это (используя MSys А.К.А. ГИТ-Баш)Сервер Google App Engine dev упал на сайт-пакеты virtualenv

$ cd ROOT-DIR 
$ source ./env/Scripts/activate 
$ python path-to-gae/dev_appserver.py . 

Сервер запускается, но когда я просматриваю к localhost:8080 сервер выдает ошибку импорта на SQLAlchemy. Добавление некоторых заявлений для печати в верхней части основного файла, я считаю, что путь системы в точке, что я пытаюсь импортировать SQLAlchemy заключается в следующем:

ROOT-DIR 
d:\Google\google_appengine 
d:\Google\google_appengine 
ROOT-DIR\env\lib 
C:\python27\Lib 
C:\python27\DLLs 
ROOT-DIR\env 
d:\Google\google_appengine\lib\webapp2-2.5.2 
d:\Google\google_appengine\lib\jinja2-2.6 
d:\Google\google_appengine\lib\MySQLdb-1.2.4 
d:\Google\google_appengine\lib\markupsafe-0.15 
d:\Google\google_appengine\lib\setuptools-0.6c11 
d:\Google\google_appengine\lib\protorpc-1.0 
d:\Google\google_appengine\lib\webob-1.1.1 
d:\Google\google_appengine\lib\yaml-3.10 

Очевидно, ROOT-DIR/env/lib/site-packages не существует, что объясняет ошибку импорта.

Если я начинаю питона оболочки моего virtualenv и сделать это

import sys 
for x in sys.path: 
    print x 

Я вижу ROOT-DIR\env\lib\site-packages, так что кажется, что сервер DEV GAE является сбросив что путь во время выполнения, или что-то.

Почему сервер dev удаляет каталог сайтов-пакетов?

Это с Python 2.7 на Windows 8.

ответ

2

Вы можете использовать только virtualenv работать с местными библиотеками, которые соответствуют поддерживаемые 3rd Party LIBS. Для всех остальных вам необходимо установить их в каталог проекта, чтобы они были развернуты.

Read https://cloud.google.com/appengine/docs/python/tools/libraries27 уделяет пристальное внимание на «Управление локальных библиотек с virtualenv», а затем «Добавление сторонних пакетов в Заявку» особенно вторая тема. Есть разница.

Виртуальные виртуальные/виртуальные библиотеки существуют только для того, чтобы не устанавливать эти библиотеки в папку проекта или в базовый дистрибутив python. Если вы должны были установить их в свой проект, вам нужно будет удалить их перед развертыванием. Помните, что все пользовательские сторонние библиотеки должны быть развернуты вместе с вашим кодом. «Локальные библиотеки» предназначены только для поддерживаемых google-библиотек.

+0

Все еще не понимаю. Если dev-сервер явно удаляет каталог сайтов-пакетов из моего virtualenv, то * none * из моих виртуальных libs будут собраны, если я не сделаю дело 'pip install -t lib mylib'. Это кажется несовместимым с идеей, что «поддерживаемые» библиотеки должны работать обычным виртуальным способом. Я что-то упустил? – DanielSank

+0

Да, виртуальные/локальные библиотеки существуют только для того, чтобы вам не приходилось устанавливать эти библиотеки в папку проекта или в базовый дистрибутив python. Если вы установите их в свой проект, вам нужно будет удалить их перед развертыванием. Помните, что все пользовательские сторонние библиотеки должны быть развернуты вместе с вашим кодом. «Локальные библиотеки» предназначены только для поддерживаемых google-библиотек. –

+0

Я все еще не понимаю этого. Из раздела на связанной странице под названием «Управление локальными библиотеками с virtualenv» я цитирую: «Когда активна среда, вы можете запустить dev_appserver.py, как обычно, она будет использовать библиотеки среды и не использовать другие библиотеки, которые вы установили на твой компьютер." Если, как я уже описал, dev-сервер удаляет пакеты-сайты из моего virtualenv, то как можно утверждать, что указанное предложение? – DanielSank