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

Linda Hamilton
Lepaskan: 2024-10-28 02:53:02
asal
757 orang telah melayarinya

 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>
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!