четверг, 24 ноября 2011 г.

Python: настройка Google App Engine в окружении virtualenv на MacOS X 10.7 (Lion)



Задача запустить сервер разработки 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/ и радуемся! :)

Комментариев нет:

Отправить комментарий