Hãy tưởng tượng cấu trúc thư mục:Không nên nhập khẩu tuyệt đối theo mặc định trong python27?
/ a/ __init__.py b.py c.py c.py
file /a/b.py
trông giống như:
import c should_be_absolute = c
Tất cả các tập tin khác (kể cả __init__
) là rỗng.
Khi chạy một kịch bản thử nghiệm (sử dụng python 2.7):
import a.b
print a.b.should_be_absolute
với PYTHONPATH=/
từ một thư mục rỗng (do đó không có gì được thêm vào PYTHONPATH
từ thư mục hiện hành) tôi nhận được
<module 'a.c' from '/a/c.py'>
nơi theo đến PEP 328 và tuyên bố import <> is always absolute
Tôi mong đợi:
<module 'c' from '/c.py'>
Kết quả như mong đợi khi tôi xóa tệp /a/c.py
.
Tôi đang thiếu gì? Và nếu đây là hành vi đúng - cách nhập mô-đun c
từ b
(thay vì a.c
)?
Cập nhật:
Theo python dev mailing list nó dường như là một lỗi trong tài liệu. Nhập khẩu là không tuyệt đối theo mặc định trong python27.
Con trăn hoàn chỉnh của bạn là gì? Là nó chỉ /? Có thể bạn đang sử dụng tên gói gốc – jdi
FWIW, công cụ này giống như bạn mong đợi ở Python 3. – geoffspear
@jdi - có gốc là điều duy nhất trong PYTHONPATH (đã chỉnh sửa bài đăng gốc để làm rõ hơn) – karolx