ดูเหมือนว่ามีคำถามอยู่บ้างแล้วที่นี่เกี่ยวกับการนำเข้าสัมพัทธ์ในหลาม 3 แต่หลังจากผ่านหลาย ๆ คำถามแล้วฉันยังไม่พบคำตอบสำหรับปัญหาของฉัน ดังนั้นนี่คือคำถาม
ฉันมีแพ็คเกจที่แสดงด้านล่าง
package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
และฉันมีบรรทัดเดียวใน test.py:
from ..A import foo
ตอนนี้ฉันอยู่ในโฟลเดอร์ของpackage
และฉันเรียกใช้
python -m test_A.test
ฉันได้รับข้อความ
"ValueError: attempted relative import beyond top-level package"
แต่ถ้าฉันอยู่ในโฟลเดอร์พาเรนต์ของpackage
เช่นฉันเรียกใช้:
cd ..
python -m package.test_A.test
ทุกอย่างปกติดี.
ตอนนี้คำถามของฉันคือ
เมื่อผมอยู่ในโฟลเดอร์ของpackage
และฉันเรียกใช้โมดูลภายใน test_A ย่อยแพคเกจเป็นtest_A.test
อยู่บนพื้นฐานของความเข้าใจของฉัน..A
ขึ้นไปเพียงระดับหนึ่งซึ่งยังคงอยู่ในโฟลเดอร์ทำไมจะให้ข้อความบอกว่าpackage
beyond top-level package
อะไรคือสาเหตุที่ทำให้เกิดข้อความแสดงข้อผิดพลาดนี้?