我在 Heroku 上部署 Django 应用程序时遇到问题。
出现问题是因为我正在使用python-decouple library https://pypi.python.org/pypi/python-decouple。我使用它是为了不暴露我的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
file.
这个问题的解决办法是什么?
您将无法从 Heroku 上未跟踪的文件加载设置。它是文件系统是短暂的 https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem;下次 dyno 重新启动时,您手动添加的任何内容都将丢失。这经常发生 https://devcenter.heroku.com/articles/dynos#restarting.
“Heroku 方式”是将您的设置放入环境变量中 https://devcenter.heroku.com/articles/config-vars。环境变量将可供所有测功机使用,并且有两个主要好处:
- 您的设置不会在代码存储库中公开
- 您可以更改环境变量而无需更改代码
令人高兴的是,python-decouple自 3.0 版本起尊重环境变量 https://pypi.python.org/pypi/python-decouple#overriding-config-files-with-environment-variables。您应该能够为所有设置添加环境变量,然后成功部署。 (我以前没有使用过该库,但看起来你不需要.env
文件(如果您的所有设置都在环境中找到)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)