Задача запустить сервер разработки Google App Engine в изолированном окружении python2.5, созданном при помощи virtualenv на макоси, неожиданно свелась к скрупулезным поискам информации по тем или иных багам, периодически всплывающим в процессе настройки. Посему решил разместить здесь краткое описание процесса на русском.
1. Переходим в выбранную проектную папку и генерируем изолированное окружение virtualenv.
$ cd ~/projects
$ virtualenv -p python2.5 gae-sandbox
2. Скачиваем Google App Engine SDK для Python со страницы загрузки , берем zip архив, нам не нужен системный .dmg. Распаковываем архив в ~/projects/gae-sandbox
$ cd gae-sandbox
$ source bin/activate
$ wget http://googleappengine.googlecode.com/files/google_appengine_1.6.0.zip
$ unzip google_appengine_1.6.0.zip
$ rm google_appengine_1.6.0.zip
3. Прописываем пути к библиотекам самого app engine и связанным с ним внешним библиотекам
$ echo "../../../google_appengine" > lib/python2.5/site-packages/gae.pth
с внешними библиотеками придется редактировать один файлик:
$ nano lib/python2.5/site.py
В редакторе находим функцию main() через CTR+w и вводим main(), в ее конец дописываем, соблюдая необходимые отступы:
from dev_appserver import fix_sys_path
fix_sys_path()
сохраняем файл (CTRL+x y Enter) и проверяем:
$python
>>> from google import appengine
>>> import yaml
Ошибок не должно быть, если Вы сделали все правильно.
Выходим из интерпретатора (CTRL+d)
4. Дальше самое интересное, а именно баг GAE под номером 4339. Браузером переходим по ссылке и берем файлик патча в 29-ом комменте, сохраняем его скажем в ~/Downloads и возвращаемся в терминал.
Патчим в терминале:
$ cd google_appengine/google/appengine/tools/
$ patch -p1 < ~/Downloads/dev_appserver_import_hook.patch
$ cd ../../../../
5. Делаем ссылку на запуск сервера разработки в папке bin виртуального окружения:
$ cd bin
$ ln -s ../google_appengine/dev_appserver.py .
6. Тестируем запуск демки в виртуальном окружении на Google App Engine:
$ cd ../google_appengine/demos/guestbook/
$ dev_appserver.py .
Открываем в браузере http://localhost:8080/ и радуемся! :)
Комментариев нет:
Отправить комментарий