我无法在Heroku上部署我的Django应用程序。
出现问题是因为我使用的是python-decouple
library。我正在使用它,以免暴露我的API_KEYS
。
这是我得到的错误:
File "/app/weather/settings.py", line 20, in <module>
API_KEY = config('API_KEY')
File "/app/.heroku/python/lib/python3.6/site-packages/decouple.py", line 197, in __call__
return self.config(*args, **kwargs)
File "/app/.heroku/python/lib/python3.6/site-packages/decouple.py", line 85, in __call__
return self.get(*args, **kwargs)
File "/app/.heroku/python/lib/python3.6/site-packages/decouple.py", line 70, in get
raise UndefinedValueError('{} not found. Declare it as envvar or define a default value.'.format(option))
decouple.UndefinedValueError: API_KEY not found. Declare it as envvar or define a default value.
我已将所有变量存储在BASE_DIR + '/.env'
文件中,并将此文件添加到我的.gitignore
文件中。
这个问题的解决方案是什么?
答案 0 :(得分:1)
您无法从Heroku上未跟踪的文件加载设置。它的filesystem is ephemeral;手动添加的任何内容都将在下次重启时丢失。这happens frequently。
&#34; Heroku方式&#34;是put your settings in environment variables。所有dynos都可以使用环境变量,并且有两个主要好处:
很高兴,python-decouple
respects environment variables since version 3.0。您应该能够为所有设置添加环境变量,然后成功部署。 (我之前没有使用过该库,但如果在环境中找到所有设置,看起来您不需要.env
文件。)