Как структурировать стандартный проект Python (модули, библиотеки) для будущего использования в Google App Engine?

В настоящее время я разрабатываю проект Python, который растет, и я могу реализовать его как webapp в GAE в будущем.

По мере роста проекта я обрезаю потенциально многоразовый код на отдельные пакеты и модули, которые в настоящее время находятся на моем PYTHONPATH.

Есть ли у вас какие-либо советы о том, как структурировать мой проект и пакеты многократного использования, чтобы он в будущем хорошо вписывался в проект GAE?

Рассмотрение рекомендаций по структуре проекта GAE в других сообщениях (таких как this и this и this) кажутся довольно плоскими - это лучший способ пойти?

Что относительно сторонних пакетов/модулей? Лучше всего укусить пулю и использовать VirtualEnv с самого начала?

Большое спасибо. Prembo.

Ответ 1

Просто поместите ваши различные библиотеки в пакеты из корневого каталога вашего приложения. Корневой каталог автоматически добавляется в ваше приложение sys.path.

Если вы хотите, чтобы вы могли поместить их в каталог lib от корня, вы можете сделать это, но вам придется написать модуль, который добавляет этот каталог в конец sys.path, и импортировать его до вы импортируете что-либо из lib.

Использование virtualenv - это вариант, но я лично не думаю, что он сильно вас выгоден, поскольку вы не можете запустить virtualenv в процессе производства, а dev_appserver эмулирует производственную среду.

Ответ 2

Я не могу сказать вам о GAE в частности, но могу сказать, что кусание пули не имеет к этому никакого отношения - использование VirtualEnv (и virtualenvwrapper) сделает вашу разработку Python более гладкой, простой и простой.

Поверхность слишком низкая, преимуществ много.

Переключитесь. Теперь.

Ответ 3

Мой мастер тезис в качестве студента был реализован в App Engine. Проект является открытым исходным кодом, и вы можете использовать его, как вам нравится, я надеюсь, вы получите эту идею, и вы можете адаптировать ее к вашим потребностям.

Ответ 4

SDK GAE Python создает свою собственную виртуальную среду при работе в локальной среде, поэтому virtualenv вам не поможет. Существуют фреймворки, такие как web2py и django-nonrel, которые хорошо работают с GAE, если вы хотите портировать свой код или, по крайней мере, вдохновляетесь их структурой папок.