Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Python Gagal Mengimport Relatif daripada Direktori Pakej Apabila Menggunakan `python -m`?

Mengapa Python Gagal Mengimport Relatif daripada Direktori Pakej Apabila Menggunakan `python -m`?

Linda Hamilton
Lepaskan: 2024-11-24 02:52:08
asal
995 orang telah melayarinya

Why Does Python Fail Relative Imports from a Package Directory When Using `python -m`?

Melangkaui Ralat Pakej Peringkat Atas dalam Import Relatif

Ralat yang membingungkan berlaku apabila mencuba import relatif daripada sub-modul pakej apabila dilaksanakan daripada dalam direktori pakej. Khususnya, ralat "ValueError: percubaan import relatif melebihi pakej peringkat atas" ditemui.

Ralat ini berpunca daripada gelagat pelik Python yang tidak merekodkan lokasi dari mana pakej dimuatkan. Akibatnya, apabila menjalankan modul menggunakan python -m package_name.module_name, direktori kerja semasa tidak dianggap sebagai pakej.

Oleh itu, percubaan import relatif seperti dari ..A import foo, yang bertujuan untuk mengakses modul dalam direktori adik-beradik, menghasilkan mesej ralat. Ini kerana Python tidak mempunyai rujukan yang diperlukan untuk direktori adik-beradik.

Sebaliknya, menjalankan modul menggunakan python -m package_name.package_submodule.module_name membolehkan penyelesaian yang berjaya bagi from ..A import foo import statement. Dalam kes ini, Python mengekalkan pengetahuan tentang direktori induk, yang membolehkan mengakses direktori adik-beradik.

Masih tidak jelas mengapa Python tidak menganggap direktori kerja semasa sebagai pakej, walaupun utiliti praktikalnya. Had ini boleh menyebabkan kekeliruan dan ralat yang tidak dijangka apabila melakukan import relatif dari dalam direktori pakej.

Atas ialah kandungan terperinci Mengapa Python Gagal Mengimport Relatif daripada Direktori Pakej Apabila Menggunakan `python -m`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan