Локальный SDK GAE 1.5.5 не может работать со средой выполнения python2.7

GAE 1.5.5 , похоже, имеет несколько отличных, долгожданных функций. Однако они пока не работают на меня.

Я загрузил и установил GAE 1.5.5 и использую вырожденное приложение AAA для тестирования.

Вот примерно мой app.yaml (с различными изменениями, внесенными для тестирования).

app.yaml

application: AAA # mystical creation.
version: alpha-1
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /media
 static_dir: media/

- url: /favicon.ico
 static_files: media/images/favicon.ico
 upload: media/images/favicon.ico

- url: /admin
 script: AAA.app
 login: admin

- url: /.*
 script: AAA.app

skip_files:
- ^(.*/)?app\.yaml

libraries:
- name: django
 version: "1.2"
- name: jinja2
 version: latest
- name: yaml
 version: latest

Я запускаю это на Mac OS X Lion (10.7.1).

Я предполагаю, что на самом деле я не использую среду выполнения Python 2.7, несмотря на объявление в app.yaml о ее использовании. Я не совсем уверен, как подтвердить эту теорию, но ошибки, с которыми я столкнулся, согласуются с ней. Эти ошибки воспроизводятся ниже.

Python Path

Если путь Python для Google App Engine не задан, механизм приложения запускается с использованием Python 2.6.6.

Чтобы исправить это, я установил Python Path на /usr/bin/python2.7 в настройках Google App Engine.

WSGI

Я получаю следующую ошибку:

 /Applications/GoogleAppEngineLauncher.app/Contents/Resources/
GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
google/appengine/tools/dev_appserver.py in
GetParentPackage(self=, fullname='AAA.app')
  2334
  2335       if self.find_module(fullname) is None:
=> 2336         raise ImportError('Could not find module %s' %
fullname)
  2337
  2338       return self._module_dict[parent_module_fullname]
builtin ImportError = , fullname =
'AAA.app'
: Could not find module AAA.app
     args = ('Could not find module AAA.app',)
     message = 'Could not find module AAA.app'

Где я пробовал AAA.app как:

AAA.py:

 from google.appengine.dist import use_library
 use_library('django', '1.2') # otherwise we still get django 0.96

 from django.core.handlers import wsgi
 app = wsgi.WSGIHandler()

AAA / __ init __. Py

# same content as above

AAA / AAA .py

# same content as above

Обратите внимание, что я могу продолжать запускать CGI с измененными app.yaml и AAA.py, mutatis mutandis . Однако это все равно приводит к следующим ошибкам:

Jinja2

Когда я запускаю import jinja2 , я получаю ImportError .

Django2

Без:

from google.appengine.dist import use_library
use_library('django', '1.2')

Я получаю Django 0.96.

Теория

Учитывая следующее:

  • http://code.google.com/appengine/docs/python/tools/libraries27.html утверждает: «Функция use_library () предоставленный пакетом google.appengine.dist недоступен в Python 2.7. "
  • use_library работает для меня
  • use_library требуется, потому что" библиотеки: {django: {..., {{1 }} version: "1.2"}} не устанавливает версию django в 1.2
  • В среду выполнения Python 2.7 включен только Django 1.2 (см. ссылку library27.html выше)
  • У меня есть вручную указать Python 2.7 в пути Python, чтобы для GAE использовать Python 2.7
  • WSGI не загружает приложение должным образом
  • Jinja2 не может быть импортирован

Я считаю, что на самом деле не использую среда выполнения Python 2.7 GAE (т.е. объявление app.yaml игнорируется в SDK GAE 1.5.5).

Я надеюсь, что приведенное выше описание является полезным, и я был бы признателен за любые мысли относительно того, что может быть происходящее здесь - и возможные решения.

6
задан Brian M. Hunt 13 October 2011 в 19:33
поделиться