3

私はGAEpython2.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()

webob devappserver2.fix_sys_path-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 に答える