如何定义环境变量DJANGO_SETTINGS_MODULE并排查迁移脚本报错
解决DJANGO_SETTINGS_MODULE定义问题与迁移执行错误
你这问题其实是踩了个常见小坑:直接运行迁移文件0001_initial.py是完全错误的操作!Django的迁移文件是由框架的manage.py工具统一调度的,直接跑脚本会导致Django找不到项目的配置信息,自然就会报DJANGO_SETTINGS_MODULE相关的错误。
下面给你两种解决思路,推荐用第一种最省心的方式:
方法一:用manage.py执行迁移(强烈推荐)
这是Django官方指定的迁移操作方式,完全不用手动设置环境变量,步骤如下:
- 先切换到你的项目根目录(就是包含
manage.py的那个文件夹,从你的路径看应该是这个):cd "/home/sultancode/Desktop/HEART DISEASE PREDICTION/Heart Disease Prediction/" - 执行迁移命令,把所有未应用的迁移同步到数据库:
/usr/bin/python3.8 manage.py migrate
如果是你刚修改了accounts app的模型,需要生成新的迁移文件,就用这条命令:
/usr/bin/python3.8 manage.py makemigrations accounts
方法二:手动设置DJANGO_SETTINGS_MODULE(仅特殊场景用)
如果确实有特殊需求要手动指定环境变量,也可以这么操作:
Linux/macOS 终端临时设置
在执行Python命令前,先导出环境变量:
export DJANGO_SETTINGS_MODULE="你的项目名.settings"
举个例子,如果你的项目根目录下的settings文件属于heart_disease_prediction这个项目(对应文件夹名),那就是:
export DJANGO_SETTINGS_MODULE="heart_disease_prediction.settings"
但还是要强调:就算设置了环境变量,也别直接跑迁移文件,还是用manage.py来操作才靠谱。
Windows 环境设置
- 命令提示符里:
set DJANGO_SETTINGS_MODULE=你的项目名.settings - PowerShell里:
$env:DJANGO_SETTINGS_MODULE = "你的项目名.settings"
最后再啰嗦一句:迁移文件是Django用来管理数据库结构的“中间文件”,它的执行必须依赖框架的上下文,所以一定要通过manage.py来触发,别再直接跑单个迁移脚本啦!
内容的提问来源于stack exchange,提问作者Hillary K Mutai
相关产品推荐
相关产品推荐

