Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membetulkan Ralat 'Percubaan Import Relatif dalam Bukan Pakej' dalam Python?

Bagaimana untuk Membetulkan Ralat 'Percubaan Import Relatif dalam Bukan Pakej' dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-18 14:08:11807semak imbas

How to Fix

Menyelesaikan Ralat "Percubaan Import Relatif dalam Bukan Pakej" dengan __init__.py

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn