Mengimport modul dengan laluan relatif boleh membawa kepada cabaran apabila bekerja dengan struktur pakej Python. Satu isu sedemikian ialah ralat "Percubaan import relatif dalam bukan pakej" yang dihadapi semasa cuba mengimport modul merentas direktori pakej, walaupun terdapat fail __init__.py.
Untuk memahami punca, penting untuk memahami bagaimana mekanisme import Python beroperasi. Import biasanya dilaksanakan secara relatif kepada nama fail semasa. Walau bagaimanapun, apabila melaksanakan fail secara langsung, ia menggunakan nama "__main__" dan bukannya nama biasa. Keanehan ini mengganggu import relatif, mengakibatkan ralat yang disebutkan di atas.
Daripada menjalankan kod secara langsung, pertimbangkan untuk menggunakan pilihan -m, yang membolehkan anda menganggap modul sebagai skrip dan memberikannya nama yang sesuai. Sebagai contoh, untuk melaksanakan core_test.py menggunakan kaedah ini, masukkan arahan berikut:
python -m pkg.tests.core_test
Sebagai alternatif, anda boleh menentukan nama pakej dalam modul itu sendiri dengan menggunakan atribut pakej. Teknik ini memastikan import relatif berfungsi dengan betul walaupun apabila fail dijalankan secara langsung sebagai skrip. Rujuk Cadangan Peningkatan Python 366 (PEP-366) untuk butiran lanjut tentang pendekatan ini.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Percubaan Import Relatif dalam Bukan Pakej' dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!