Import Relatif dalam Python: Penjelasan Terperinci
Apabila bekerja dengan direktori berstruktur yang mengandungi berbilang subpakej, mengimport modul daripada subpakej lain boleh menjadi keperluan biasa. Walau bagaimanapun, pendekatan standard menggunakan import relatif, seperti daripada ..sub2 import mod2, mungkin gagal dalam senario tertentu.
Begitulah keadaannya bagi pembangun yang cuba mengimport mod2 daripada mod1, dalam struktur direktori yang disediakan dalam soalan. Mesej ralat "Percubaan import relatif dalam bukan pakej" menunjukkan masalah dengan import relatif.
Punca isu terletak pada fakta bahawa modul sedang dijalankan sebagai __main__ dengan menghantarnya sebagai hujah kepada jurubahasa. Menurut PEP 328, import relatif menggunakan atribut __name__ modul untuk menentukan kedudukannya dalam hierarki pakej. Apabila nama modul ditetapkan kepada __main__, import relatif diselesaikan seolah-olah modul adalah modul peringkat tertinggi, tanpa mengira lokasi sebenar dalam sistem fail.
Tingkah laku ini boleh menyebabkan kekeliruan apabila cuba mengimport modul daripada subpakej lain. Untuk menyelesaikan isu ini, adalah disyorkan untuk meletakkan kod dalam skrip dan mengimport subpakej yang berkaitan secara eksplisit menggunakan import mutlak, seperti import sub2.mod2.
Dalam Python 2.6 dan kemudian, bagaimanapun, keupayaan untuk merujuk modul berbanding dengan modul utama diperkenalkan. PEP 366 menerangkan perubahan ini. Untuk menggunakan import relatif dengan berkesan, adalah penting untuk merujuk modul utama dan bukannya menggunakan __main__. Ini boleh dicapai dalam pelbagai cara, seperti:
Dengan menggunakan teknik ini, pembangun boleh menggunakan import relatif secara berkesan untuk mengatur projek Python mereka dan mengurus kebergantungan antara modul secara berstruktur.
Atas ialah kandungan terperinci Mengapa Import Relatif Gagal dalam Python Apabila Modul Dijalankan sebagai `__main__`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!