使用未跟踪的.env文件部署到Heroku

时间:2017-09-17 19:01:06

标签: python django heroku

我无法在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文件中。

这个问题的解决方案是什么?

1 个答案:

答案 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文件。)