ModuleNotFoundError при попытке импорта извне каталога

Я работаю над приложением Flask и пытаюсь запустить тестовый файл, но не могу этого сделать. Моя текущая структура приложения:

Project
── app
│   ├── __init__.py
│   ├── forms.py
│   ├── model.py
│   ├── models.py
│   ├── static
│   │   ├── css
│   │   ├── fonts
│   │   ├── img
│   │   ├── js
│   │   └── uploads
│   ├── templates
│   │   ├── client
│   │   │   ├── client-base.html
│   │   │   ├── client-inventory.html
│   │   │   ├── client-login.html
│   │   │   ├── client-macros.html
│   │   │   ├── client-main.html
│   │   │   └── client-signup.html
│   │   └── user
│   │       ├── user-base.html
│   │       ├── user-macros.html
│   │       └── user-main.html
│   └── views
│       ├── __init__.py
│       ├── client.py
│       └── user.py
├── config.py
├── run.py
└── tests
    └── test_user_model.py

когда я пытаюсь бежать from app.models import User в test_user_model.py это поднимает ModuleNotFoundError: No module named 'app', Я пытался редактировать оператор импорта бесчисленное множество разных способов, но он все равно вызывает ошибку в каждом случае (from ..app import models выходит за рамки, import app и подобный импорт также не работает.)

2 ответа

Решение

Вы должны добавить __init__.py в вашем tests каталог. Пустой __init__.py превратит этот каталог в пакет. Тогда вы можете использовать эту строку в вашем test_user_model.py:

from app.models import User

Подробности см. В PEP 328.

Вам нужно добавить app в вашем PYTHONPATH

Другие вопросы по тегам