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之類的事情
添加回答
舉報