部署Django时如何自动设置DJANGO_SETTINGS_MODULE环境变量
自动配置DJANGO_SETTINGS_MODULE环境变量的实现方案
根据你的使用场景,可以选择以下任意一种方案:
方案1:修改manage.py默认配置(开发环境最便捷)
打开项目根目录的manage.py文件,找到设置默认配置模块的代码行,直接修改默认值即可:
def main(): # 将原有默认的配置路径替换为你的开发环境配置路径 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'src.settings.dev') # 剩余原有代码无需修改
修改完成后,直接执行python manage.py runserver就会自动读取开发环境配置,不需要额外设置环境变量。
方案2:通过.env文件统一管理环境变量(全场景通用)
- 先安装依赖包:
pip install python-dotenv - 在项目根目录新建
.env文件,写入配置:
DJANGO_SETTINGS_MODULE=src.settings.dev
- 分别修改
manage.py、wsgi.py、asgi.py三个入口文件,在导入os的代码后添加环境变量加载逻辑:
import os from dotenv import load_dotenv # 加载根目录下的.env配置 load_dotenv()
生产环境可以直接在服务器全局环境变量中添加该配置,无需依赖.env文件,避免敏感配置泄露。
方案3:绑定到启动脚本/shell配置(本地开发场景)
Windows 环境
可以在项目根目录新建dev_start.bat脚本,写入以下内容:
@echo off set DJANGO_SETTINGS_MODULE=src.settings.dev python manage.py runserver
后续直接双击运行这个bat文件即可启动服务,无需手动执行set命令。
如果需要全局生效,可以修改PowerShell的$PROFILE配置文件,添加$env:DJANGO_SETTINGS_MODULE = "src.settings.dev",重启终端后永久生效。
macOS/Linux 环境
修改对应shell的启动配置文件(/.bashrc、/.zshrc等),添加一行:
export DJANGO_SETTINGS_MODULE=src.settings.dev
执行source ~/.bashrc(或对应配置文件)后生效,所有终端窗口都会默认携带该环境变量。
方案4:写入服务/容器配置(生产部署场景)
如果使用gunicorn、uWSGI等应用服务器部署,或者使用Docker容器,可以直接在启动配置中添加环境变量:
- gunicorn启动命令示例:
DJANGO_SETTINGS_MODULE=src.settings.dev gunicorn src.wsgi:application - Dockerfile配置示例:
ENV DJANGO_SETTINGS_MODULE=src.settings.dev
内容的提问来源于stack exchange,提问作者Chowa C
相关产品推荐
相关产品推荐

