requests_html requests library from python json import simplejson attributeerror

library - requests json python



El módulo JSON de Python no tiene atributos ''volcados'' (8)

Cómo reproducir este error de python:

AttributeError: ''module'' object has no attribute ''dumps''

Probablemente creó un archivo llamado json.py al que se pudo acceder desde sys.path de python. O agregó un directorio a sys.path de su python que incluía un archivo llamado json.py.

Opción 1: envenenar el pozo importando json, luego importando otro módulo con el mismo alias:

eric@dev /var/www/sandbox/eric $ python >>> import json >>> json.dumps([]) ''[]'' >>> import sys as json >>> json.dumps([]) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ''module'' object has no attribute ''dumps''

Opción 2: envenenar el pozo al crear un archivo llamado json.py en la ruta de acceso de python:

Crea un nuevo archivo json.py, guárdalo. Pon este código allí:

def foo(): print "bar"

Abre el terminal python e importa json:

eric@dev /var/www/sandbox/eric/wsgi $ python >>> import json >>> type(json) <type ''module''> >>> json.dumps([]) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ''module'' object has no attribute ''dumps'' >>> json.foo() bar

Te está diciendo que tu método no está ahí. Entonces, pídale a python que le cuente más sobre la naturaleza de este módulo y encontrará pistas sobre quién lo envenenó.

>>> print json <module ''json'' from ''json.py''> >>> dir(json) [''__builtins__'', ''__doc__'', ''__file__'', ''__name__'', ''__package__'', ''foo''] >>> type(json) <type ''module''>

Estoy ejecutando Python 2.7 (x64 Linux) y tratando de convertir un dict a un objeto JSON.

>>> import sys >>> sys.version_info sys.version_info(major=2, minor=7, micro=0, releaselevel=''final'', serial=0)

Estoy tratando de usar simplejson (retrocediendo a json desde la biblioteca estándar) pero me sale el siguiente error:

>>> 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''

¿Hay algo obvio que me esté perdiendo sobre el uso de json o simplejson con Python 2.7?


¿Tiene un archivo llamado json o simplejson en su ruta que no es una de esas dos bibliotecas? Si lo haces, entonces Python cargará ese archivo en lugar de la biblioteca real.


Creo un archivo llamado json.py. Cuando ejecuto esto recibí el error, así que lo cambio de nombre y las palabras para mí.


Este error acaba de ocurrir para mí en un contexto diferente, pero sigue siendo una de las dos cosas llamadas json. Había nombrado una "vista" en Django (una función de Python que prepara una respuesta a una solicitud HTTP), en este caso una vista para manejar la solicitud de datos en formato json.

Pero yo había llamado a la vista "json". Mal movimiento. Me desconcerté cuando print dir (json) devolvió una respuesta libre de volcados en mi vista "json", mientras que mostraba "volcados" como un atributo en una vista similar que funcionaba.

Esta discusión solucionó el problema para mí.


Incluso me enfrenté a un error similar mientras ejecutaba json.dump (). En mi caso estaba recibiendo una cadena de error:

AttributeError: el objeto ''archivo'' no tiene atributo ''volcado''

Como lo arreglé

Estaba usando el nombre de la variable como "json" para el descriptor de archivos en la misma secuencia de comandos, por lo que estaba recibiendo este error. Así que simplemente cambié el nombre de esa variable y resolví el problema.


Puede tener otra secuencia de comandos en su ruta de Python llamada "json", que está importando por accidente. Puede resolver esto cambiando el nombre del que está bajo su control o usando

from __future__ import absolute_import


Resultó que tenía una biblioteca json antigua cargada de una instalación antigua de Python:

>>> import json >>> print json.__file__ /home/areynolds/opt/lib/python2.5/site-packages/json.pyc

Quitar esas cosas viejas solucionó el problema. ¡Gracias!


Tuvo un problema similar, fue causado por otro módulo personalizado. json.py otro script json.py y resultó que intentó cargar el archivo json.py personalizado como un módulo. El método de volcados obviamente no está disponible allí.

Cambiar el nombre del script json.py a otra cosa (json2.py) eliminó el problema.