如何在GitHub部署中隐藏密码?.gitignore与dotenv在Heroku部署失效求助
解决方案
1. 用Heroku原生环境变量存储敏感信息
Heroku自带环境变量管理机制,完全不需要依赖本地的config.py或.env文件:
- 打开终端,执行命令直接设置变量:
heroku config:set APP_PASSWORD="blablabla" - 执行
heroku config命令,能查看所有已设置的环境变量,确认目标变量是否添加成功。
2. 修改代码统一读取环境变量
调整代码逻辑,让本地和Heroku环境共用一套读取方式:
- 替换原有读取
config.py的代码,改为从环境变量获取:import os APP_PASSWORD = os.getenv("APP_PASSWORD") - 本地开发时仍可保留dotenv支持,确保本地调试正常:
在项目根目录创建.env文件写入APP_PASSWORD="blablabla",代码里保留加载逻辑:import os from dotenv import load_dotenv # 本地会自动加载.env,Heroku因无该文件会跳过此步骤 load_dotenv() APP_PASSWORD = os.getenv("APP_PASSWORD")
3. 确认.gitignore配置无误
确保敏感文件不会被提交到GitHub:
# .gitignore 关键内容 config.py .env
4. 验证Heroku部署效果
重新推送代码到Heroku后,可通过日志确认变量加载情况:
heroku logs --tail
如果代码中使用APP_PASSWORD的模块未抛出未定义错误,说明配置生效。
常见避坑点
- 绝对不要把
.env文件提交到GitHub,Heroku无法读取你本地的.env,必须通过heroku config:set设置变量。 - 确保
os.getenv的变量名和Heroku上设置的完全一致,变量名大小写敏感。
内容的提问来源于stack exchange,提问作者David Harket
相关产品推荐
相关产品推荐

