我正在尝试在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存储桶。任何见解或经验都非常感激。
答案 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从头开始生成一个新的评论应用程序。