Modul Python 3 'json' sebenarnya rusak
Saya menanyakan pertanyaan ini di sini dan bukan di Stack Overflow karena tampaknya khusus untuk MacOS. Banyak jawaban di sana mengarah untuk mencari modul "json.py" yang buruk namun kita dapat melihat dari berikut ini bahwa tidak ada modul buruk seperti itu yang sedang diimpor.
Bagaimana cara "memperbaiki" instalasi 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
Di sinilah lokasinya:
$ which python3
/usr/local/bin/python3
Saya sudah mencoba tetapi brew reinstall python3tidak berhasil.
Jawaban
Saya tidak dapat mereproduksi kesalahan pada dua Mac di sini, satu menjalankan python 3.7.4 di Mojave; dan satu menjalankan 3.8.3 di Big Sur. Saya menginstal python langsung dari paket di 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
Keduanya mengatakan "Clang 6.0", jika relevan.
Mungkin instalasi Anda rusak, dan Anda perlu menginstal ulang python3. Jika Anda menggunakan HomeBrew atau sejenisnya, Anda mungkin perlu menghubungi mereka untuk mendapatkan dukungan.
Saya kira saya akan berurusan dengan "glib, graphviz dan gts" nanti, tetapi apa triknya bagi saya adalah menghapus sepenuhnya instalasi buatan Python 3:
brew uninstall --ignore-dependencies python3
Dan sekarang semuanya kembali 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}'