Tôi đang gặp một số khó khăn trong việc tìm ra cách thực hiện nhập khẩu tương đối bằng Python. Tôi hiện đang làm việc cho dự án lớn đầu tiên của mình nên tôi muốn làm điều đó ngay bằng cách sử dụng các bài kiểm tra đơn vị. Tuy nhiên, tôi gặp sự cố với cấu trúc tệp và nhập tương đối của mình.Sự nhầm lẫn nhập khẩu tương đối bằng Python
Dưới đây là cấu trúc hiện tại của tôi:
App/
__init__.py
src/
__init__.py
person.py
tests/
__init__.py
person_tests.py
Những gì tôi muốn làm là có thể nhập person.py vào person_tests.py cho các bài kiểm tra đơn vị. Tôi đã cố gắng những điều sau đây:
from . import person
from .. import person
from .App.src import person
from ..App.src import person
from ..src.person import *
from ..src import person
from .src import person
Mỗi một trong những trên throws hoặc là một lỗi cú pháp hoặc
ValueError: Attempted relative import in non-package
Có thể ai đó xin vui lòng làm rõ điều này cho tôi?
Chỉnh sửa: Phiên bản Python là 2.7. Chỉnh sửa: Tôi muốn có thể sử dụng tính năng này bằng cách nói là không hay hoặc mũi.
Tôi cho rằng nhập khẩu tuyệt đối là cách được ưu tiên trong hầu hết các trường hợp. [Một số đọc] (http://www.python.org/dev/peps/pep-0328/#rationale-for-absolute-imports) (đừng bỏ lỡ phần sau phần đó về nhập khẩu tương đối). – keyser
Bạn có thể thêm tệp (có thể) trống "' __init __. Py' "trong thư mục" 'App'" để làm cho nó thành gói –
Rất tiếc. Tôi quên đề cập đến rằng tôi có một tập tin '__init __. Py' trong thư mục App. Đang cập nhật câu hỏi. – firstofth300