You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下VS Code运行Django无法读取.env文件中DATABASE_URL变量

Windows下Django配置PostgreSQL环境变量失效解决办法

问题背景

首次配置PostgreSQL连接并使用虚拟环境变量,已在settings目录和manage.py同级目录放置内容一致的.env文件,但运行manage.py runserver时始终提示缺少DATABASE_URL变量。尝试将.env移至虚拟环境目录、手动执行set DATABASE_URL='postgres://username:password@localhost:5432/authors-live'命令均无效。

当前目录结构

MASTERDJANGOWITHDOCKER
├─ env (虚拟环境文件夹)
└─ authors-src
   ├─ manage.py
   ├─ .env
   └─ authors_api
      └─ settings
         ├─ base.py
         └─ .env

相关代码

settings/base.py

import environ
from pathlib import Path

env = environ.Env()

ROOT_DIR = Path(__file__).resolve().parent.parent.parent  # 定位到manage.py所在层级

# 指定应用存储目录
APPS_DIR = ROOT_DIR / 'core_apps'

BASE_DIR = Path(__file__).resolve().parent.parent

DATABASES = {
    'default': env.db('DATABASE_URL')
}

.env文件内容

DATABASE_URL='postgres://username:password@localhost:5432/authors-live'
DJANGO_SECRET_KEY="django-insecure"

报错信息

...
File "C:\Python39\lib\os.py", line 679, in __getitem__
    raise KeyError(key) from None
KeyError: 'DATABASE_URL'
...

File "C:\Users\...\authors-haven-api\authors-src\env\lib\site-packages\environ\environ.py", line 371, in get_value
    raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: Set the DATABASE_URL environment variable

解决办法

1. 核心修复:添加.env文件加载逻辑

environ库不会自动读取.env文件,必须手动调用env.read_env()方法指定文件路径。修改settings/base.py,在初始化env后添加加载代码:

import environ
from pathlib import Path

env = environ.Env()

ROOT_DIR = Path(__file__).resolve().parent.parent.parent  # 定位到manage.py所在层级

# 加载manage.py同级的.env文件
env.read_env(ROOT_DIR / '.env')

APPS_DIR = ROOT_DIR / 'core_apps'

BASE_DIR = Path(__file__).resolve().parent.parent

DATABASES = {
    'default': env.db('DATABASE_URL')
}

2. 修正.env文件格式

Windows环境下,环境变量值不要用单/双引号包裹,避免解析异常,修改后的.env内容:

DATABASE_URL=postgres://username:password@localhost:5432/authors-live
DJANGO_SECRET_KEY=django-insecure

3. 确保虚拟环境正确激活

运行命令前必须激活虚拟环境:

cd MASTERDJANGOWITHDOCKER\env\Scripts
activate
cd ..\..\authors-src
python manage.py runserver

4. 手动设置环境变量的正确方式(备用)

若.env加载仍有问题,激活虚拟环境后执行以下命令(去掉引号):

set DATABASE_URL=postgres://username:password@localhost:5432/authors-live

内容的提问来源于stack exchange,提问作者justin107d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:20:31