4 回答

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
嘗試使用 django-dotenv 而不是使用 python-dotenv
不確定 settings.py 中有哪些導(dǎo)入內(nèi)容,但請(qǐng)嘗試以下操作:
# settings.py import os SECRET_KEY = os.getenv('SECRET_KEY')
如果您嘗試在設(shè)置文件頂部導(dǎo)入 dotenv,則可能需要將其刪除。
另請(qǐng)記住在 Heroku 應(yīng)用程序設(shè)置下的“配置變量”中添加這些環(huán)境變量。在您推送到 Heroku 之前,這些應(yīng)該已經(jīng)存在。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
dotenv的目的是“從 .env 文件中讀取鍵值對(duì)并將它們?cè)O(shè)置為環(huán)境變量”
通常,擁有文件的目的.env
是提供一種在本地管理環(huán)境的便捷方法。
通常這不會(huì)被簽入版本控制(即它列在.gitignore中)。好處是:
你的敏感環(huán)境變量不能被別人看到
在生產(chǎn)中,您可能希望能夠更改這些變量而無需重新部署
不同的人可以在不同的環(huán)境中運(yùn)行應(yīng)用程序
因此,當(dāng)您部署到 Heroku 時(shí),您通常不包含您的.env
,因此dotenv
無需執(zhí)行任何操作。
相反,Heroku 有自己的管理環(huán)境變量的方法。
這就留下了在代碼中做什么的問題,嘗試調(diào)用dotenv
Heroku 會(huì)出現(xiàn)您所描述的錯(cuò)誤。
一種選擇是僅在環(huán)境不是生產(chǎn)環(huán)境時(shí)加載它。像這樣的東西:
import os
if not os.environ.get("PRODUCTION"):
? ? from dotenv import load_dotenv
? ? load_dotenv()
請(qǐng)注意,您需要PRODUCTION在 Heroku 上設(shè)置環(huán)境變量,或者選擇一個(gè)已經(jīng)存在的變量。

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
我不知道這是否有幫助,但我在部署到 Heroku 時(shí)遇到了這個(gè)錯(cuò)誤,但就我而言,我使用的是 pipelinenv,問題是我所做的要求或任何導(dǎo)入都是在 pip install 而不是 pipelinenv 中安裝的安裝,一旦我在那里完成了所有安裝,它就起作用了,我不記得是否做了類似pipenv freeze>requirements.txt之類的事情
添加回答
舉報(bào)