Ralat Import Relatif: Melangkaui Pakej Peringkat Atas
Dalam Python 3, import relatif menyediakan cara yang mudah untuk merujuk kepada modul dalam yang sama direktori atau pakej. Walau bagaimanapun, menghadapi ralat "ValueError: percubaan import relatif melebihi pakej peringkat atas" boleh membingungkan.
Pertimbangkan struktur pakej berikut:
package/ __init__.py A/ __init__.py foo.py test_A/ __init__.py test.py
Apabila cuba mengimport modul daripada sub-pakej (cth., daripada ..A import foo dalam test.py), anda mungkin menghadapi ralat yang disebutkan di atas jika syarat berikut adalah bertemu:
The sebab ralat ini berpunca daripada aspek asas mekanisme import Python. Apabila pakej dimuatkan, ia dianggap sebagai "pakej peringkat atasan", dan import relatif hanya boleh merujuk modul dalam pakej tersebut atau sub-pakejnya. Walau bagaimanapun, Python tidak secara automatik mengiktiraf direktori induk pakej sebagai pakej apabila menjalankan modul secara langsung.
Oleh itu, dalam senario di atas, apabila anda menjalankan python -m test_A.test dari dalam direktori pakej, induk direktori ('pakej/') tidak dilihat sebagai pakej, dan import relatif daripada ..Import foo secara berkesan cuba melangkaui peringkat teratas pakej.
Untuk menyelesaikan ralat ini, pastikan anda menentukan keseluruhan laluan pakej semasa menjalankan modul:
python -m package.test_A.test
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \'ValueError: percubaan import relatif melebihi pakej peringkat atas\' dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!