Selepas memasang Python 3.6.1 untuk macOS X, sebuah percubaan untuk menggunakan konsol atau menjalankan apa-apa sahaja dengan Python3 menghasilkan mesej ralat samar:
AttributeError: module 'enum' has no attribute 'IntFlag'
Analisis Masalah
Tertanya-tanya mengapa ralat ini berlaku, kami memeriksa kod yang dimaksudkan:
<code class="python">class RegexFlag(enum.IntFlag):</code>
Kelas RegexFlag mewarisi daripada enum.IntFlag, iaitu ahli modul enum. Walau bagaimanapun, kami menghadapi ralat kerana Python membuang pengecualian AttributeError, menunjukkan bahawa modul enum tidak mempunyai atribut IntFlag.
Penyelesaian
Menyelidiki isu tersebut, kami mendapati bahawa modul enum yang digunakan mungkin bukan perpustakaan standard. Pakej enum34, yang direka untuk versi Python di bawah 3.5, boleh dipasang bersama enum perpustakaan standard dalam Python 3.6.1.
Mengesahkan ketulenan enum boleh dilakukan dengan memeriksa laluan failnya:
<code class="python">import enum print(enum.__file__)</code>
Jika enum.__file__ tidak menghala ke lokasi perpustakaan standard (cth., /usr/local/lib/python3.6/enum.py), maka pakej enum34 berkemungkinan menjadi punca isu itu.
Resolusi
Untuk membetulkan keadaan, nyahpasang enum34:
pip uninstall -y enum34
Sebagai alternatif, jika kod perlu dijalankan pada kedua-dua versi Python sebelum 3.5 dan lebih tinggi daripada 3.5, pertimbangkan untuk menggunakan pakej enum-compat. Pakej ini memasang enum34 hanya untuk versi Python lama yang tidak mempunyai modul enum perpustakaan standard.
Atas ialah kandungan terperinci Mengapa Python 3.6.1 Membuang \'AttributeError: Modul \'enum\' Tiada Atribut \'IntFlag\'?\'. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!