Tampaknya sudah ada beberapa pertanyaan di sini tentang impor relatif dalam python 3, tetapi setelah melalui banyak dari mereka saya masih belum menemukan jawaban untuk masalah saya. jadi inilah pertanyaannya.
Saya memiliki paket yang ditunjukkan di bawah ini
package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
dan saya memiliki satu baris di test.py:
from ..A import foo
sekarang, saya ada di folder package
, dan saya jalankan
python -m test_A.test
Saya mendapat pesan
"ValueError: attempted relative import beyond top-level package"
tetapi jika saya berada di folder induk package
, misalnya, saya menjalankan:
cd ..
python -m package.test_A.test
semuanya baik-baik saja.
Sekarang pertanyaan saya adalah:
ketika saya berada di folder package
, dan saya menjalankan modul di dalam sub-paket test_A karena test_A.test
, berdasarkan pemahaman saya, ..A
naik hanya satu tingkat, yang masih di dalam package
folder, mengapa memberikan pesan yang mengatakan beyond top-level package
. Apa sebenarnya alasan yang menyebabkan pesan kesalahan ini?