El módulo 'json' de Python 3 está realmente dañado

Oct 02 2020

Estoy haciendo esta pregunta aquí y no en Stack Overflow porque parece ser específico de MacOS. Muchas respuestas allí apuntan a buscar un módulo "json.py" incorrecto, sin embargo, podemos ver a partir de lo siguiente que no se está importando un módulo tan incorrecto.

¿Cómo "arreglo" la instalación de Python 3?

$ python3
Python 3.7.7 (default, Mar 10 2020, 15:43:33) 
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> import json
>>> d = {'a' : 100, 'b' : 200}
>>> json.dumps(d)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'json' has no attribute 'dumps'

>>> print(json.__file__)
None

Aquí es donde se encuentra:

$ which python3
/usr/local/bin/python3

Lo intenté brew reinstall python3en vano.

Respuestas

benwiggy Oct 02 2020 at 21:14

No puedo reproducir los errores en dos Mac aquí, uno que ejecuta python 3.7.4 en Mojave; y uno con 3.8.3 en Big Sur. Instalé Python directamente desde los paquetes en python.org.

>>> json.dumps(d)
'{"a": 100, "b": 200}'
>>> print(json.__file__)
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/__init__.py

Ambos dicen "Clang 6.0", si es relevante.

Puede ser que su instalación esté dañada y necesite reinstalar python3. Si está utilizando HomeBrew o similar, es posible que deba comunicarse con ellos para obtener asistencia.

CharneyKaye Oct 02 2020 at 21:24

Bueno, supongo que me ocuparé de "glib, graphviz y gts" más tarde, pero el truco que me sirvió fue eliminar por completo la instalación de preparación de Python 3:

brew uninstall --ignore-dependencies python3

Y ahora las cosas han vuelto a la normalidad:

$ python3
Python 3.7.3 (default, Apr 24 2020, 18:51:23) 
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import json
>>> d = {'a' : 100, 'b' : 200}
>>> json.dumps(d)
'{"a": 100, "b": 200}'