Python JSON module n'a pas d'attribut "dumps'
Je suis sous Python 2.7 (x64 Linux) et d'essayer de convertir un dict
à un objet JSON.
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=0, releaselevel='final', serial=0)
Je suis en train d'utiliser simplejson
(pour retomber à json
de la bibliothèque standard), mais j'obtiens l'erreur suivante:
>>> try: import simplejson as json
... except ImportError: import json
...
>>> metadata = dict()
>>> metadata['foo'] = 'bar'
>>> print metadata
{'foo': 'bar'}
>>> json.dumps(metadata)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'dumps'
Est là quelque chose d'évident, je suis absent sur l'utilisation de json
ou simplejson
avec Python 2.7?
- Cela a bien fonctionné pour moi sous Linux 64 bits, mais je n'ai pas simplejson. Que diriez -
print json.__file__
? - essayez print dir(json) le retour de quoi?
Vous devez vous connecter pour publier un commentaire.
Eu des problèmes similaires, il a été causé par un autre module personnalisé. J'ai nommé un autre script
json.py
et il s'avère qu'il a tenté de charger la coutume json.py fichier en tant que module. décharges méthode n'est évidemment pas disponible.De renommer le json.py script pour quelque chose d'autre (json2.py) se débarrasser de la question.
json.pyc
(c'est PYC) lors du changement de nomS'est avéré que j'avais un vieux
json
bibliothèque chargée à partir d'une ancienne installation de Python:Retrait que des vieux trucs résolu le problème. Merci!
Avez-vous un fichier nommé
json
ousimplejson
dans votre chemin d'accès qui n'est pas l'une de ces deux bibliothèques? Si vous le faites, alors python charger ce fichier au lieu de la vraie bibliothèque.Comment reproduire ce python erreur:
Vous avez probablement créé un fichier appelé json.py qui était accessible à partir de python
sys.path
. Ou vous avez ajouté un répertoire de votre python sys.chemin qui inclus un fichier appelé json.py.Option 1: Poison the well par l'importation de json, puis de l'importation d'un autre module avec le même alias:
Option 2: Poison the well par la création d'un fichier appelé json.py dans le python path:
Créer un nouveau fichier json.py, de l'enregistrer. Mettez ce code là:
Ouvrir le python terminal et l'importation de json:
C'est vous dire que votre méthode n'est pas là. Donc, demander à python pour vous en dire plus sur la nature de ce module et vous trouverez des indices sur qui a empoisonné.
Vous pouvez avoir un autre script dans votre Python chemin appelé "json", qui sont à l'importation par accident. Vous pourriez résoudre ce soit en renommant le un sous votre contrôle ou à l'aide de
J'ai créer un fichier nommé json.py.
Lorsque je l'exécute j'ai obtenu l'erreur,
j'ai donc renommer et il des mots pour moi.
Même j'ai été confronté à une erreur semblable lors de l'exécution de json.dump(). Dans mon cas, j'ai été faire une chaîne d'erreur :
AttributeError: 'fichier' objet n'a pas d'attribut 'dump'
Comment je fixe -
J'ai été en utilisant le nom de la variable comme "json" pour le descripteur de Fichier dans le même script, c'est pourquoi j'ai été faire cette erreur. Donc j'ai simplement renommé que le nom de la variable et le problème résolu.
Cette erreur vient de se produire pour moi, dans un contexte différent, mais toujours de deux choses l'une nommée json. Je l'avait nommé une "vue" dans Django (une fonction Python qui prépare une réponse à une requête HTTP), dans ce cas, une vue à la poignée de demande de données au format json.
Mais j'avais nommé le point de vue "json". Mauvais coup. J'étais perplexe quand print dir(json) retourné un décharges sans réponse, à mon avis, "json" alors qu'il a montré des "dumps" comme un attribut dans une vue similaire qui ont travaillé.
Cette discussion résolu le problème pour moi.