django报错:ModuleNotFoundError: No module named web

我使用 django 测试运行一个 Python 脚本,例如使用 ORM 获取数据。如果 Python 脚本在项目根目录下(与 manage.py 同级)则不会出错,但如果在项目根目录中的子目录中则遇到 ModuleNotFoundError: No module named web

解决

假设项目根目录 pro/,应用目录 pro/web/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import os
import sys
from pathlib import Path

import django


# 如果py文件在项目根目录下(与 manage.py 同级)可以忽略
# 如果py文件在项目根目录的某个层级子目录中,添加以下两行:
BASE_DIR = f'{Path(__file__).resolve().parent.parent}'
sys.path.append(BASE_DIR)

# 配置文件路径
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pro.settings')
django.setup()
# 以上必须先运行,自己的代码写在下面

if __name__ == '__main__':

# 读取数据库
from web.models import XiaoMi
Q = XiaoMi.objects.all()
print(Q)