Tôi có một số vấn đề trong việc cấu trúc dự án python của tôi. Hiện tại nó là một loạt các tập tin trong cùng một thư mục. Tôi đã cố gắng cấu trúc nó nhưThử nghiệm và cấu trúc gói python
proj/
__init__.py
foo.py
...
bar/
__init__.py
foobar.py
...
tests/
foo_test.py
foobar_test.py
...
Vấn đề là tôi không thể, từ thư mục bên trong, nhập mô-đun từ các thư mục bên ngoài. Điều này đặc biệt gây phiền nhiễu với các xét nghiệm.
Tôi đã đọc PEP 328 về nhập tương đối và PEP 366 về nhập tương đối từ mô-đun chính. Nhưng cả hai phương pháp này đều yêu cầu gói cơ bản nằm trong PYTHONPATH của tôi. Trên thực tế tôi có được các lỗi sau
ValueError: Attempted relative import in non-package.
Vì vậy, tôi đã thêm mã boilerplate sau trên đầu trang của các tập tin thử nghiệm
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
Tôi vẫn nhận được lỗi tương tự. cách chính xác để
- cấu trúc một gói là gì, hoàn chỉnh với các bài kiểm tra, và
- thêm thư mục cơ sở để con đường để cho phép nhập khẩu?
EDIT Theo yêu cầu trong các bình luận, tôi thêm một khẩu dụ thất bại (trong file foo_test.py
)
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
from ..foo import Foo
Bạn có thể hiển thị quá trình nhập mẫu không thành công không? –
Ngoài ra, vui lòng bao gồm giá trị cho 'PYTHONPATH' –
' echo $ PYTHONPATH' của bạn chỉ còn trống. – Andrea