【发布时间】:2011-12-06 02:53:55
【问题描述】:
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 路径
当 Google App Engine 的 Python 路径未设置时,应用引擎运行 使用 Python 2.6.6。
为了解决这个问题,我在 Google 应用中将 Python 路径设置为 /usr/bin/python2.7
引擎偏好。
WSGI
我收到以下错误:
/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
google/appengine/tools/dev_appserver.py in
GetParentPackage(self=<google.appengine.tools.dev_appserver.HardenedModulesHook
object>, 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 = <type 'exceptions.ImportError'>, fullname =
'AAA.app'
<type 'exceptions.ImportError'>: 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
请注意,我可以继续运行修改 app.yaml 和 AAA.py 的 CGI, 比照。然而,这样做仍然会导致以下错误:
神社2
当我运行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: {..., version: "1.2"}} 声明未将 django 版本设置为 1.2
- Python 2.7 运行时中仅包含 Django 1.2(根据 上面的libraries27.html链接)
- 我必须在 Python 路径中手动指定 Python 2.7 才能按顺序 让 GAE 使用 Python 2.7
- WSGI 无法正确加载应用程序
- Jinja2 无法导入
我相信我并没有真正使用 Python 2.7 GAE 运行时(即 GAE 1.5.5 SDK 中忽略了 app.yaml 声明)。
我希望以上描述是一个有用的描述,如果您对这里可能发生的事情以及潜在的解决方案提出任何想法,我将不胜感激。
【问题讨论】:
标签: python google-app-engine python-2.7