尝试从目录外部导入时的ModuleNotFoundError

时间:2017-01-31 17:09:21

标签: python python-3.x flask import relative

我正在使用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'。我尝试过无数种不同的方式编辑import语句,但在每种情况下都会引发错误(from ..app import models超出范围,import app并且类似的导入也不起作用。)

2 个答案:

答案 0 :(得分:3)

您应在__init__.py目录中添加tests。空__init__.py会将该目录转换为包。然后,您可以在test_user_model.py

中使用此行
from app.models import User

请参阅PEP 328中的详细信息。

答案 1 :(得分:0)

您需要在app

中添加PYTHONPATH