Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menyelesaikan Ralat \'Percubaan Import Relatif Melangkaui Pakej Peringkat Atas\' Python?

Bagaimana untuk Menyelesaikan Ralat \'Percubaan Import Relatif Melangkaui Pakej Peringkat Atas\' Python?

Barbara Streisand
Barbara Streisandasal
2024-11-18 07:35:02658semak imbas

How to Resolve Python's

Ralat Import Relatif Python: Menyelesaikan masalah "Percubaan Import Relatif Melangkaui Pakej Peringkat Atas"

Dalam Python, import relatif membenarkan anda merujuk modul dalam pakej berbanding dengan direktori semasa. Walau bagaimanapun, percubaan import relatif melebihi pakej peringkat atas boleh mengakibatkan ralat "ValueError: percubaan import relatif melebihi pakej peringkat atas."

Pertimbangkan struktur pakej berikut:

package/
   __init__.py
   A/
      __init__.py
      foo.py
   test_A/
      __init__.py
      test.py

Apabila melaksanakan test.py dalam direktori pakej menggunakan python -m test_A.test, anda menghadapi ralat di atas. Sebabnya ialah Python tidak menyimpan maklumat tentang pakej peringkat teratas di mana test_A.test terletak.

Apabila menggunakan dari ..A import foo, Python cuba mengakses direktori saudara ke lokasi yang dimuatkan. Walau bagaimanapun, dalam kes ini, tiada konsep direktori adik-beradik kerana pakej tidak diiktiraf sebagai pakej.

Sebaliknya, melaksanakan python -m package.test_A.test menyelesaikan import relatif dengan betul kerana Python boleh mengenal pasti pakej sebagai pakej peringkat teratas dan menavigasi direktori anaknya, test_A.

Walau bagaimanapun, kekurangan pengiktirafan Python terhadap direktori kerja semasa sebagai satu pakej kekal misteri. Walaupun kegunaannya, pengawasan ini boleh menyebabkan ralat apabila mencuba import relatif daripada direktori peringkat atas.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Percubaan Import Relatif Melangkaui Pakej Peringkat Atas' 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