执行python manage.py runserver报KeyError:'AWS_ACCESS_KEY_ID'如何解决
报错原因
这个报错和os.py的代码本身无关,是你Django项目的settings.py第164行代码尝试直接从系统环境变量中读取AWS_ACCESS_KEY_ID值,但当前运行环境没有配置该环境变量,才触发了KeyError异常。
解决方法
分两种场景选择对应方案:
场景1:本地开发不需要使用AWS相关功能
直接修改settings.py里的对应配置行,用os.environ.get()替代直接取值的写法,取不到对应变量时会返回默认值不会抛错:
# 原写法会直接抛错 # AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID'] # 修改后写法 AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID', '') # 关联的AWS_SECRET_ACCESS_KEY等其他AWS配置也同步修改为get写法即可
场景2:本地开发确实需要使用AWS服务
有两种配置环境变量的方式可选:
方式1:临时在当前终端配置(关闭终端后配置失效)
- 如果你用的是Windows cmd终端,依次执行以下命令再启动项目:
set AWS_ACCESS_KEY_ID=替换为你的实际AWS访问密钥ID set AWS_SECRET_ACCESS_KEY=替换为你的实际AWS秘密访问密钥 python manage.py runserver
- 如果你用的是Windows PowerShell终端,依次执行以下命令再启动项目:
$env:AWS_ACCESS_KEY_ID="替换为你的实际AWS访问密钥ID" $env:AWS_SECRET_ACCESS_KEY="替换为你的实际AWS秘密访问密钥" python manage.py runserver
方式2:用.env文件持久化管理环境变量(推荐本地开发使用)
- 安装环境变量管理工具:
pip install python-dotenv
- 在项目根目录(和manage.py文件同级)新建名为
.env的文件,写入以下内容:
AWS_ACCESS_KEY_ID=替换为你的实际AWS访问密钥ID AWS_SECRET_ACCESS_KEY=替换为你的实际AWS秘密访问密钥
- 在
settings.py文件的最开头添加两行代码,启动时自动读取.env文件的配置:
from dotenv import load_dotenv load_dotenv()
注意:
.env文件包含敏感密钥信息,一定要添加到项目的.gitignore文件中,避免误提交到公共代码仓库泄露权限。
内容的提问来源于stack exchange,提问作者thripurasai Gandham
相关产品推荐
相关产品推荐

