【发布时间】:2014-09-04 23:06:16
【问题描述】:
与此处完全相同的问题: Can't collectstatic to s3 via Heroku using boto - s3 bucket returns a NoneType
这仍然不能解决问题。
我的 settings.py 的重要部分
from base64 import b64decode
from storages.backends.s3boto import S3BotoStorage
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_S3_SECURE_URLS = False # use http instead of https
AWS_QUERYSTRING_AUTH = False # don't add complex authentication-related query parameters for requests
AWS_S3_ACCESS_KEY_ID = <snip> # enter your access key id
AWS_S3_SECRET_ACCESS_KEY = <snip> # enter your secret
AWS_STORAGE_BUCKET_NAME = 'mybucket/images/'
S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = S3_URL
在 runserver 上,collectstatic 或从 celery 执行。我得到同样的错误:
File "/virtualenv/path/to/site-package/boto/s3/connection.py", line 94, in build_auth_path
path = '/' + bucket
TypeError: cannot concatenate 'str' and 'NoneType' objects
为 keyid、访问密钥和存储桶名称设置环境变量。有趣的变化
S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
到
S3_URL = 'http://%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
导致更奇怪的错误:
from django.db.models import signals, sql
ImportError: cannot import name signals
在我开始尝试这种 s3 集成之前,该网站运行良好。
【问题讨论】:
标签: python django amazon-web-services amazon-s3