导入json在GAE dev 1.7.0和1.7.7之间失败

时间:2013-04-22 16:33:47

标签: python json google-app-engine

刚刚更新了GAE Python dev环境从1.7.0到1.7.7,并出现错误:

ImportError: No module named json

所以我创建了一个最小的测试用例,这里是app.yap:

application: myapp

version: 1
api_version: 1
runtime: python27
threadsafe: true  

libraries:
- name: jinja2
  version: "2.6"

handlers:
- url: /test.*
  script: test.app
  login: required

- url: /.*
  script: routes.app
  login: required

和test.py:

import webapp2
import json

class MainHandler(webapp2.RequestHandler):

    def get(self):
        self.response.out.write("test.py")

app = webapp2.WSGIApplication([('/test', MainHandler)],
    debug=True)

切换开发环境是完全一致的 - 错误是在1.7.7而不是1.7.0(从Linux上从终端运行开发环境)引发的。我没有尝试将其上传到生产环境。它是在尝试从Python 2.5升级到2.7时发生的,所以可能是由于我不熟悉2.7。

2 个答案:

答案 0 :(得分:2)

这是一个noobie错误。如上所述,我正在从2.5升级到2.7,在此期间我将simplejson导入json。

在2.5开发期间,我创建了一个名为json.py的文件,当然在升级到2.7并尝试导入json时会引起冲突,所以我重命名了该文件。对不起伙计们,我应该提到这一点,但如果我这样做了,我会意识到...... json.pyc还在闲逛!

删除json.pyc文件修复它。然而,它并没有解释为什么json.pyc的存在影响1.7.7而不是1.7.0 - 两者之间的切换是完全可重复的。

答案 1 :(得分:0)

你可以检查simplejson,就像this post一样,除了我认为在GAE中你从django.utils得到simplejson:

try: from django.utils import simplejson as json
except ImportError: import json

但是import json的{​​{3}}。如果上述方法有效,那么您可能在2.5上运行。