Модуль Python 3 'json' действительно поврежден

Oct 02 2020

Я задаю этот вопрос здесь, а не в 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.

Ответы

benwiggy Oct 02 2020 at 21:14

Здесь я не могу воспроизвести ошибки на двух компьютерах 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 или подобное, вам может потребоваться обратиться к ним за поддержкой.

CharneyKaye Oct 02 2020 at 21:24

Что ж, полагаю, я займусь "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}'