为Heroku设置AS3; sendgrid的collectstatic错误

时间:2012-07-09 02:41:34

标签: django heroku amazon-s3 sendgrid

我正在尝试在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存储桶。任何见解或经验都非常感激。

2 个答案:

答案 0 :(得分:1)

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

对于懒惰:

heroku labs:enable user_env_compile -a myapp

答案 1 :(得分:0)

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

问题是,app.json中的Sendgrid配置被添加到预先存在的PR中,该PR没有触发新应用的生成。至少对于Heroku评论应用程序,加载项仅在部署应用程序时首次生成。因此,Heroku评论应用程序没有Sendgrid插件并且失败了。

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