GAE 1.5.5看起来有一些优秀的,等待很久的功能。但是,他们还没有为我工作。
我已经下载并安装了GAE 1.5.5,并且正在使用退化的“AAA”应用进行测试。
这大致是我的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中声明使用它。我不太确定如何验证这个理论,但我遇到的错误与它一致。这些错误转载如下。
未设置Google App Engine的Python路径时,应用引擎会运行 使用Python 2.6.6。
要解决此问题,我将Python路径设置为Google App中的/usr/bin/python2.7
引擎偏好。
我收到以下错误:
/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作为:
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()
__init__.py
# same content as above
# same content as above
请注意,我可以继续使用app.yaml和AAA.py修改运行CGI, 比照变通。但是,这样做会导致以下错误:
当我运行import jinja2
时,我得到ImportError
。
不
from google.appengine.dist import use_library
use_library('django', '1.2')
我最终得到了Django 0.96。
鉴于以下内容:
我相信我并没有真正使用Python 2.7 GAE运行时(即GAE 1.5.5 SDK中忽略了app.yaml声明)。
我希望以上内容是一个有用的描述,如果您对此处可能发生的事情以及潜在的解决方案有任何想法,我将不胜感激。
答案 0 :(得分:6)
我有同样的问题,但在Windows上,I posted on the Google App Engine forum这是我得到的官方回复:
Dev服务器尚不支持2.7。目前唯一的测试方法 基于2.7的代码是关于appengine的
答案 1 :(得分:4)
您可以将2.7运行时与本地SDK一起使用,但不是在线程安全模式下,或者您的应用程序定义为script: your.app
。而是使用script: your_main_script.py
。
对于SDK中没有的jinja2和webapp2,您可以下载它们并将它们放在SDK基目录中,默认情况下将其添加到sys.path。
您将无法测试多线程功能,但您可以执行其他所有操作,只需在部署之前对app.yaml
和your_main_script.py
进行更改。
编辑:此外,我必须在os.environ[u'APPENGINE_RUNTIME'] = u'python27'
中执行your_main_script.py
,以强制SDK使用webapp2。
答案 2 :(得分:1)
Allbuttonspressed最近发布了这个方便的guide;
你可以在Python27上运行dev_appserver
,threadsafe
设置为yes。