Я пытаюсь использовать Python unittest и относительный импорт, и я не могу понять это. Я знаю, что есть много связанных вопросов, но никто из них не помог до сих пор. Извините, если это повторяется, но я бы очень признателен за любую помощь. Я пытался использовать синтаксис из PEP 328 http://www.python.org/dev/peps/pep-0328/, но у меня должно быть что-то не так.
Моя структура каталогов:
project/
__init__.py
main_program.py
lib/
__init__.py
lib_a
lib_b
tests/
__init__.py
test_a
test_b
Я запускаю свои тесты, используя:
python -m unittest test_module1 test_module2
test_a необходимо импортировать как lib/lib_a, так и main_program. Это код из test_a, который я пытаюсь использовать для импорта:
from ..lib import lib_a as lib
from ...project import main_program
оба повышают эту ошибку:
ValueError: Attempted relative import in non-package
Все мои init.py файлы в настоящее время пустые.
Приветствуется любой конкретный совет!
Edit:
Это может быть ответ: Пакеты Python? Я все еще проверяю, будет ли это работать.
Изменить II:
Чтобы уточнить, на этом этапе я попытался запустить тестовый файл тремя способами:
project/tests $ python -m unittest test_a
project/tests $ python -m test_a
project/tests $ ./test_a
Все три ошибки с той же ошибкой, что и выше. Когда я использую те же три синтаксиса, но в каталоге проекта, я получаю эту ошибку:
ValueError: Attempted relative import beyond toplevel package
Еще раз спасибо.