Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa saya mendapat \'ModuleNotFoundError: Tiada modul bernama x\' apabila menggunakan import relatif dalam Python 3?
Import Relatif dan ModuleNotFoundError: Tiada modul bernama x
Apabila cuba memanfaatkan import relatif dalam Python 3, pengaturcara kadang-kadang menghadapi "ModuleNotFoundError: Tiada modul bernama x" ralat. Ralat ini menandakan ketidakupayaan jurubahasa untuk mencari modul dengan nama khusus itu semasa masa jalan.
Untuk memahami isu ini, adalah penting untuk membezakan antara import mutlak dan relatif. Import mutlak digunakan untuk mengimport modul yang tersedia pada sys.path, manakala import relatif digunakan untuk mengimport modul berbanding dengan modul semasa. Walau bagaimanapun, import relatif memerlukan modul semasa tergolong dalam pakej.
Coretan kod yang disediakan terdiri daripada dua fail: test.py dan config.py. config.py termasuk fungsi dan pembolehubah, manakala test.py mengimport konfigurasi dan mengakses parameter 'debug'nya. Walaupun terdapat fail __init__.py, ralat "ModuleNotFoundError: Tiada modul bernama 'config'" berlaku.
Ralat ini berpunca daripada fakta bahawa fail yang sedang dilaksanakan (test.py) tidak disimpan dalam struktur pakej. Akibatnya, ia tidak dapat melakukan import relatif. Menggunakan import mutlak akan menyelesaikan isu ini, seperti yang dilihat dalam coretan kod yang diubah suai di bawah:
<code class="python"># test.py import ryan.config # Replace config with ryan.config for absolute import print(ryan.config.debug)</code>
Sebagai alternatif, mencipta struktur pakej dan meletakkan test.py di dalamnya akan membenarkan import relatif. Struktur direktori boleh muncul seperti berikut:
. ├── __init__.py └── ryan ├── __init__.py ├── config.py └── test.py
Kesimpulannya, import relatif hanya dibenarkan apabila modul semasa tergolong dalam pakej. Jika fail yang dilaksanakan tidak mempunyai struktur pakej, import mutlak harus digunakan untuk mengelakkan pengecualian "ModuleNotFoundError".
Atas ialah kandungan terperinci Mengapa saya mendapat \'ModuleNotFoundError: Tiada modul bernama x\' apabila menggunakan import relatif dalam Python 3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!