2010-04-26 6 views
5

Super question nub le temps! J'essaie d'utiliser simplejson sur le google appengine. Dans un terminal sur ma machine j'ai simplejson installé et fonctionnant. Mais quand j'essaie de l'importer dans un script s'exécutant sur l'appengine, j'obtiens une erreur en disant que cette bibliothèque n'existe pas. Si ouvert la console interactive sur ma machine (à partir du lien sur http://localhost:8080/_ah/admin) et tapez "importation simplejson" Je reçois:l'installation de simplejson sur le google appengine

retraçage (appel le plus récent en dernier): fichier «/home/chris/google_appengine/google/appengine/ext/admin/init .py », ligne 210, en post exec (compiled_code, globals()) fichier "", ligne 1, en ImportError: Aucun module nommé simplejson

Toute pensée?

+4

Nevermind, la voici: de django.utils importer simplejson – chriscauley

Répondre

14

Rechercher dans le paquet de django:

from django.utils import simplejson as json 
obj = json.loads(json_string) 

Depuis Sdk JSON peut être 1.4.2 importé avec la déclaration suivante:

import simplejson 

Notez que le temps d'exécution Python 2.7 vous pouvez utiliser le native Json library.

+0

Je l'ai vu cette réponse donnée souvent à cette question, mais il me semble un peu étrange d'importer quoi que ce soit à partir du package django si l'utilisateur n'est pas en utilisant Django. Les utilisateurs non-Django devraient-ils simplement ajouter le simplejson générique directement à leur projet? Ou la version fournie par Google dans le paquet django est-elle mieux adaptée à GAE que la version générique de simplejson? Depuis que j'utilise json si fortement, je veux être sûr que j'utilise la meilleure version. – Tom

+1

Django fait partie du SDK donc je ne vois pas de problème à l'utiliser. Vous pouvez également déposer dans simplejson dans votre répertoire de projet et l'utiliser directement. Rappelez-vous que c speedup ne fonctionnera pas, App Engine ne permet pas python extensions écrites en c – systempuntoout

+0

Je n'ai pas regardé spécifiquement comment Django empaquette simplejson, mais importer seulement une partie de Django conduit souvent à importer _all_ de Django. Je ne sais pas si c'est le cas ici, mais si c'est le cas, il vaudrait peut-être mieux utiliser simplementjson dans votre répertoire de projet. –

10

Vous n'avez plus besoin d'utiliser le package django pour simplejson sur Google App Engine. Ceci est particulièrement pratique pour éviter la vague d'avertissements sur les versions de Django dans votre fichier journal.

+3

Notez qu'avec python 2.7, vous devez utiliser 'json' car' simplejson' est c-acceleration. – nmat

+0

Merci @nmat votre solution m'a parfaitement aidé :-) –

Questions connexes