Google App Engine JSONPICKLE
У кого-нибудь есть jsonpickle, работающий на движке приложений Google? В моих журналах написано, что нет модуля, но есть модуль точно такой же, как вы родились. Я использую jsonpickle 0.32.
<type 'exceptions.ImportError'>: No module named jsonpickle
Traceback (most recent call last):
File "/base/data/home/apps/xxxxx/xxxxxxxxxxxxxxxxx/main.py", line 4, in <module>
import jsonpickle
2 ответа
Мне удалось заставить его работать, регистрируя django.utils.simplejson как кодировщик / декодер json. В этом реальном файле index.py класс Pizza кодируется и декодируется обратно:
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
import jsonpickle
class Pizza:
pass
class Example(webapp.RequestHandler):
def get(self):
jsonpickle.load_backend('django.utils.simplejson',
'dumps','loads',ValueError)
encoded = jsonpickle.encode(Pizza())
self.response.out.write( jsonpickle.decode(encoded).__class__ )
run_wsgi_app(webapp.WSGIApplication([('/', Example),],debug=True))
Как объясняет этот пост, jsonpickle
требуется один из нескольких базовых модулей JSON. Я бы исправил проблему следующим образом - поместите в верхней части вашего модуля (ей), которые нужно jsonpickle следующие несколько строк:
import sys
import django.utils.simplejson
sys.modules['simplejson'] = django.utils.simplejson
Это решает проблему: jsonpickle needs simplejson
(как один из модулей JSON, который он может использовать), но GAE имеет его как django.utils.simplejson
так что вам нужно "псевдоним" его соответствующим образом.