Módulo Python 3 'json' está corrompido

Oct 02 2020

Estou fazendo esta pergunta aqui e não no Stack Overflow porque parece ser específico do MacOS. Muitas respostas apontam para a busca de um módulo "json.py" inválido, no entanto, podemos ver a seguir que nenhum módulo ruim está sendo importado.

Como posso "consertar" a instalação do 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

É aqui que está localizado:

$ which python3
/usr/local/bin/python3

Eu tentei brew reinstall python3sem sucesso.

Respostas

benwiggy Oct 02 2020 at 21:14

Não consigo reproduzir os erros em dois Macs aqui, um executando python 3.7.4 no Mojave; e um rodando 3.8.3 em Big Sur. Instalei o python diretamente dos pacotes em 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 dizem "Clang 6.0", se for relevante.

Pode ser que sua instalação esteja corrompida e você precise reinstalar o python3. Se você estiver usando o HomeBrew ou similar, pode ser necessário contatá-los para obter suporte.

CharneyKaye Oct 02 2020 at 21:24

Bem, suponho que lidarei com "glib, graphviz e gts" mais tarde, mas o que funcionou para mim foi remover totalmente a instalação do Python 3:

brew uninstall --ignore-dependencies python3

E agora as coisas voltaram ao normal:

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