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.