3

我正在构建一个 GAE python 2.7 应用程序。在调试过程中,我注意到 webapp2 使用的 Request 类是基于 webob 0.9 中的类,而不是我在 app.yaml 中指定的版本:

libraries:
- name: webob
  version: "1.1.1"
- name: webapp2
  version: "2.5.1"
- name: jinja2
  version: "2.6"

问题似乎在于 dev_appserver.py 修改了 sys.path,在读取 app.yaml 之前添加了各种第三方库,因此不知道要添加到 sys.path 的版本(如果有)。例如:

EXTRA_PATHS = [
  DIR_PATH,
  os.path.join(DIR_PATH, 'lib', 'antlr3'),
  os.path.join(DIR_PATH, 'lib', 'django_0_96'),
  os.path.join(DIR_PATH, 'lib', 'fancy_urllib'),
  os.path.join(DIR_PATH, 'lib', 'ipaddr'),
  os.path.join(DIR_PATH, 'lib', 'jinja2'),
  os.path.join(DIR_PATH, 'lib', 'protorpc'),
  os.path.join(DIR_PATH, 'lib', 'PyAMF'),
  os.path.join(DIR_PATH, 'lib', 'markupsafe'),
  os.path.join(DIR_PATH, 'lib', 'webob_0_9'),
  os.path.join(DIR_PATH, 'lib', 'webapp2'),
  os.path.join(DIR_PATH, 'lib', 'yaml', 'lib'),
  os.path.join(DIR_PATH, 'lib', 'simplejson'),
  os.path.join(DIR_PATH, 'lib', 'google.appengine._internal.graphy'),
]

我正在寻找解决方法;现在我将修改我的本地 dev_appserver.py 副本,但下次升级时它会被清除。

4

1 回答 1

1

1)您可以使用devappserver2。(devappserver2 现在是实验性的,但不支持 Python 2.5)

import devappserver2
devappserver2.fix_sys_path()

devappserver2.fix_sys_pathwebob-1.2.3、webapp2-2.5.1 和 jinja2-2.6 添加到 sys.path。

https://code.google.com/p/appengine-devappserver2-experiment/

或者

2) Google App Engine 1.7.6 预发布 SDK 可用。

https://groups.google.com/forum/?fromgroups=#!topicsearchin/google-appengine/webob/google-appengine/qyT3mvTd2RU

它解决了这个问题。

于 2013-03-17T00:08:33.140 回答