Melangkaui Ralat Pakej Peringkat Atas dalam Import Relatif
Ralat yang membingungkan berlaku apabila mencuba import relatif daripada sub-modul pakej apabila dilaksanakan daripada dalam direktori pakej. Khususnya, ralat "ValueError: percubaan import relatif melebihi pakej peringkat atas" ditemui.
Ralat ini berpunca daripada gelagat pelik Python yang tidak merekodkan lokasi dari mana pakej dimuatkan. Akibatnya, apabila menjalankan modul menggunakan python -m package_name.module_name, direktori kerja semasa tidak dianggap sebagai pakej.
Oleh itu, percubaan import relatif seperti dari ..A import foo, yang bertujuan untuk mengakses modul dalam direktori adik-beradik, menghasilkan mesej ralat. Ini kerana Python tidak mempunyai rujukan yang diperlukan untuk direktori adik-beradik.
Sebaliknya, menjalankan modul menggunakan python -m package_name.package_submodule.module_name membolehkan penyelesaian yang berjaya bagi from ..A import foo import statement. Dalam kes ini, Python mengekalkan pengetahuan tentang direktori induk, yang membolehkan mengakses direktori adik-beradik.
Masih tidak jelas mengapa Python tidak menganggap direktori kerja semasa sebagai pakej, walaupun utiliti praktikalnya. Had ini boleh menyebabkan kekeliruan dan ralat yang tidak dijangka apabila melakukan import relatif dari dalam direktori pakej.
Atas ialah kandungan terperinci Mengapa Python Gagal Mengimport Relatif daripada Direktori Pakej Apabila Menggunakan `python -m`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!