У меня есть некоторые проблемы в структурировании моего проекта на Python. В настоящее время это куча файлов в одной папке. Я попытался структурировать это как
proj/
__init__.py
foo.py
...
bar/
__init__.py
foobar.py
...
tests/
foo_test.py
foobar_test.py
...
Проблема в том, что я не могу из внутренних каталогов импортировать модули из внешних каталогов. Это особенно раздражает с тестами.
Я прочитал PEP 328 об относительном импорте и PEP 366 об относительном импорте из основного модуля. Но оба эти метода требуют, чтобы базовый пакет был в моей PYTHONPATH. Действительно я получаю следующую ошибку
ValueError: Попытка относительного импорта в неупакованном виде.
Итак, я добавил следующий шаблонный код поверх тестовых файлов
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
Тем не менее я получаю ту же ошибку. Какой правильный путь к
- структурировать пакет с тестами и
- добавить базовый каталог к пути, чтобы разрешить импорт?
РЕДАКТИРОВАТЬ В соответствии с запросом в комментарии я добавляю пример импорта, который завершается неудачно (в файле foo_test.py
)
import os, sys
sys.path.append(os.path.join(os.getcwd(), os.path.pardir))
from ..foo import Foo