Модуль Python 3 'json' действительно поврежден
Я задаю этот вопрос здесь, а не в Stack Overflow, потому что он, похоже, специфичен для MacOS. Многие ответы там указывают на поиск плохого модуля "json.py", однако из следующего видно, что такой плохой модуль не импортируется.
Как мне "исправить" установку 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
Вот где он находится:
$ which python3
/usr/local/bin/python3
Я безуспешно пытался brew reinstall python3.
Ответы
Здесь я не могу воспроизвести ошибки на двух компьютерах Mac, на одном из которых работает python 3.7.4 на Mojave; и один - 3.8.3 на Биг-Суре. Я установил python прямо из пакетов на 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
Оба говорят «Clang 6.0», если это уместно.
Возможно, ваша установка повреждена, и вам нужно переустановить python3. Если вы используете HomeBrew или подобное, вам может потребоваться обратиться к ним за поддержкой.
Что ж, полагаю, я займусь "glib, graphviz и gts" позже, но что помогло мне, так это полностью удалить установку brew Python 3:
brew uninstall --ignore-dependencies python3
А теперь все наладилось:
$ 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}'