У меня есть программа 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.
Все еще не понимаю. Если dev-сервер явно удаляет каталог сайтов-пакетов из моего virtualenv, то * none * из моих виртуальных libs будут собраны, если я не сделаю дело 'pip install -t lib mylib'. Это кажется несовместимым с идеей, что «поддерживаемые» библиотеки должны работать обычным виртуальным способом. Я что-то упустил? – DanielSank
Да, виртуальные/локальные библиотеки существуют только для того, чтобы вам не приходилось устанавливать эти библиотеки в папку проекта или в базовый дистрибутив python. Если вы установите их в свой проект, вам нужно будет удалить их перед развертыванием. Помните, что все пользовательские сторонние библиотеки должны быть развернуты вместе с вашим кодом. «Локальные библиотеки» предназначены только для поддерживаемых google-библиотек. –
Я все еще не понимаю этого. Из раздела на связанной странице под названием «Управление локальными библиотеками с virtualenv» я цитирую: «Когда активна среда, вы можете запустить dev_appserver.py, как обычно, она будет использовать библиотеки среды и не использовать другие библиотеки, которые вы установили на твой компьютер." Если, как я уже описал, dev-сервер удаляет пакеты-сайты из моего virtualenv, то как можно утверждать, что указанное предложение? – DanielSank