Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Saya Mendapat 'Percubaan import relatif dalam bukan pakej' dalam Python?
Import Relatif Dalam Python
Ralat biasa, "Percubaan import relatif dalam bukan pakej," sering timbul apabila bekerja dengan import relatif dalam Ular sawa. Artikel ini bertujuan untuk menjelaskan konsep import relatif dan menyediakan penyelesaian untuk menangani ralat ini.
Perbezaan Antara Skrip dan Modul
Perbezaan utama terletak pada cara fail Python dimuatkan. Fail yang dilaksanakan secara langsung menggunakan python myfile.py dianggap sebagai skrip peringkat atasan. Sebaliknya, fail yang diimport menggunakan pernyataan import dalam fail lain ialah modul. Perbezaan ini menjadi penting untuk memahami import relatif.
Kepentingan Penamaan
Setelah dimuatkan, setiap fail diberi nama yang disimpan dalam atribut nama . Jika dimuatkan sebagai skrip, namanya ditetapkan kepada __main__. Jika diimport sebagai modul, namanya mencerminkan kedua-dua pakej yang dimiliki dan nama fail.
Contohnya, dalam struktur direktori yang disediakan:
package/ __init__.py subpackage1/ __init__.py moduleX.py moduleY.py subpackage2/ __init__.py moduleZ.py moduleA.py
Mengimport moduleX akan memberikannya nama package.subpackage1.moduleX, semasa mengimport moduleA menghasilkan nama package.moduleA. Walau bagaimanapun, melaksanakan mana-mana modul secara langsung akan menetapkan nama mereka kepada __main__, menyekat maklumat pakej.
Import Relatif
Import relatif menavigasi hierarki pakej menggunakan nama modul. Sebagai contoh, dari .. import foo menunjukkan pergerakan ke atas hierarki. Menggunakan dari .. import untuk naik memerlukan nama modul yang mengandungi titik yang mencukupi.
Modul Bukan Pakej
Walau bagaimanapun, modul dengan nama yang tidak mempunyai titik tidak dianggap sebagai sebahagian daripada satu pakej. Oleh itu, import relatif gagal dengan ralat bukan pakej dalam modul tersebut.
Penyelesaian
Untuk menyelesaikan ralat, pertimbangkan penyelesaian berikut:
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Percubaan import relatif dalam bukan pakej' dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!