Melaksanakan Import Relatif dalam Python
Apabila bekerja dengan struktur direktori hierarki dalam Python, adalah perlu untuk mengimport modul daripada subdirektori lain. Import relatif tradisional menggunakan ".." boleh membawa kepada ralat dalam senario tertentu. Terutamanya, apabila melaksanakan modul sebagai modul utama dengan menghantarnya sebagai hujah kepada penterjemah, import relatif gagal.
Menurut PEP 328, import relatif bergantung pada atribut nama modul kepada tentukan kedudukannya dalam hierarki pakej. Walau bagaimanapun, apabila nama ditetapkan kepada '__main__', seperti yang berlaku semasa menjalankan modul sebagai modul utama, import relatif diselesaikan seolah-olah modul itu adalah modul peringkat atas, tanpa mengira failnya lokasi sistem.
Untuk menangani isu ini, Python 2.6 memperkenalkan keupayaan untuk merujuk modul berbanding modul utama. Ini diterangkan dalam PEP 366. Dengan memanfaatkan ciri ini, adalah mungkin untuk melakukan import relatif tanpa menghadapi ralat "Percubaan import relatif dalam bukan pakej".
Contoh:
Dalam struktur direktori seperti:
app/ __init__.py sub1/ __init__.py mod1.py sub2/ __init__.py mod2.py
Untuk mengimport mod2 daripada mod1, anda boleh menggunakan yang berikut sintaks:
from importlib.machinery import SourceFileLoader mod2 = SourceFileLoader('mod2', 'sub2/mod2.py').load_module()
Sebagai alternatif, jika anda tidak menjalankan modul sebagai modul utama, sintaks import relatif biasa akan berfungsi:
from ..sub2 import mod2
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Import Relatif dengan Aman dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!