4 回答
TA贡献1998条经验 获得超6个赞
尝试使用 django-dotenv 而不是使用 python-dotenv
不确定 settings.py 中有哪些导入内容,但请尝试以下操作:
# settings.py import os SECRET_KEY = os.getenv('SECRET_KEY')
如果您尝试在设置文件顶部导入 dotenv,则可能需要将其删除。
另请记住在 Heroku 应用程序设置下的“配置变量”中添加这些环境变量。在您推送到 Heroku 之前,这些应该已经存在。
TA贡献1829条经验 获得超9个赞
dotenv的目的是“从 .env 文件中读取键值对并将它们设置为环境变量”
通常,拥有文件的目的.env
是提供一种在本地管理环境的便捷方法。
通常这不会被签入版本控制(即它列在.gitignore中)。好处是:
你的敏感环境变量不能被别人看到
在生产中,您可能希望能够更改这些变量而无需重新部署
不同的人可以在不同的环境中运行应用程序
因此,当您部署到 Heroku 时,您通常不包含您的.env
,因此dotenv
无需执行任何操作。
相反,Heroku 有自己的管理环境变量的方法。
这就留下了在代码中做什么的问题,尝试调用dotenv
Heroku 会出现您所描述的错误。
一种选择是仅在环境不是生产环境时加载它。像这样的东西:
import os
if not os.environ.get("PRODUCTION"):
from dotenv import load_dotenv
load_dotenv()
请注意,您需要PRODUCTION在 Heroku 上设置环境变量,或者选择一个已经存在的变量。
TA贡献1865条经验 获得超7个赞
我不知道这是否有帮助,但我在部署到 Heroku 时遇到了这个错误,但就我而言,我使用的是 pipelinenv,问题是我所做的要求或任何导入都是在 pip install 而不是 pipelinenv 中安装的安装,一旦我在那里完成了所有安装,它就起作用了,我不记得是否做了类似pipenv freeze>requirements.txt之类的事情
添加回答
举报