1

我正在尝试在 Heroku 上的第一个 Django 应用程序上设置 Amazon S3 以用于静态和媒体文件。该过程相当顺利,但是当运行 ./manage.py collectstatic 将我的静态文件复制到 AS3 存储桶时,我收到以下错误:

  File "manage.py", line 12, in <module>
  import settings
  File "/Users/me/djangoprojects/project/project/settings.py", line 165, in <module>
  EMAIL_HOST_USER = os.environ['SENDGRID_USERNAME']
  File "/Users/me/djangoprojects/env/bin/../lib/python2.7/UserDict.py", line 23, in __getitem__
  raise KeyError(key)
  KeyError: 'SENDGRID_USERNAME'

到目前为止,sendgrid 的设置已用于部署:

EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = os.environ['SENDGRID_USERNAME']
EMAIL_HOST_PASSWORD = os.environ['SENDGRID_PASSWORD']
EMAIL_PORT = 587
EMAIL_USE_TLS = True

我不确定问题是什么,因为由于此错误,文件没有被复制到 AS3 存储桶。非常感谢任何见解或经验。

4

2 回答 2

1

您需要在编译期间启用环境变量。查看heroku 文档(向下滚动到“构建期间的配置变量”部分)。

对于懒人:

heroku labs:enable user_env_compile -a myapp
于 2012-07-09T03:17:44.727 回答
0

我在将带有 Sendgrid 的 Django 应用程序部署到 Heroku 审查应用程序时遇到了相同的错误。我们的配置是在 GitHub 上打开一个新 PR 时启动一个评论应用程序。

问题原来是在 app.json 中的 Sendgrid 配置被添加到预先存在的 PR 中,这并没有触发新应用程序的生成。至少对于 Heroku 评论应用程序,附加组件仅在第一次部署应用程序时生成。结果,Heroku 评论应用程序没有 Sendgrid 插件并且失败了。

解决方案是检查另一个分支,推送到 GitHub,然后让 Heroku 从头开始​​生成一个新的评论应用程序。

于 2016-12-09T01:06:42.843 回答