Có vẻ như đã có khá nhiều câu hỏi ở đây về việc nhập tương đối vào python 3, nhưng sau khi trải qua nhiều câu hỏi, tôi vẫn không tìm thấy câu trả lời cho vấn đề của mình. Vì vậy, đây là câu hỏi.
Tôi có một gói được hiển thị dưới đây
package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
và tôi có một dòng duy nhất trong test.py:
from ..A import foo
Bây giờ, tôi đang ở trong thư mục của package
và tôi chạy
python -m test_A.test
Tôi nhận được tin nhắn
"ValueError: attempted relative import beyond top-level package"
nhưng nếu tôi ở trong thư mục mẹ của package
, ví dụ: tôi chạy:
cd ..
python -m package.test_A.test
mọi thứ đều ổn.
Bây giờ câu hỏi của tôi là:
khi tôi ở trong thư mục package
và tôi chạy mô-đun bên trong gói phụ test_A test_A.test
, dựa trên sự hiểu biết của tôi, ..A
chỉ tăng một cấp, vẫn nằm trong package
thư mục, tại sao nó lại đưa ra thông báo beyond top-level package
. Chính xác lý do gây ra thông báo lỗi này là gì?