Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa saya mendapat \"ModuleNotFoundError: Tiada modul bernama x\" apabila menggunakan import relatif dalam Python 3?

Mengapa saya mendapat \"ModuleNotFoundError: Tiada modul bernama x\" apabila menggunakan import relatif dalam Python 3?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 02:53:02762semak imbas

 Why am I getting

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn