使用boto3和存储将django app的静态文件上传到s3

Mr *_* T. 2 python django amazon-s3 django-staticfiles boto3

我知道这个问题已被问过很多次,但我仍然无法让它发挥作用.我的Env配置:

  • Python 2.7
  • Django 1.9.5

在我的requrements.txt中,我有以下依赖项

  • boto3 == 1.4.2
  • Django的储存== 1.5.1

storages在INSTALLED_APPS中添加了.这些是我的设置参数.

AWS_ACCESS_KEY_ID='****'
AWS_SECRET_ACCESS_KEY='****'
AWS_STORAGE_BUCKET_NAME='****'
AWS_AUTO_CREATE_BUCKET = False
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE
AWS_LOCATION = 'static/'
Run Code Online (Sandbox Code Playgroud)

当我运行该./manage.py collectstatic命令时,我收到以下错误:

File "/home/me/myproj/local/lib/python2.7/site-packages/storages/backends/s3boto.py", line 23, in <module>
    raise ImproperlyConfigured("Could not load Boto's S3 bindings.\n"
django.core.exceptions.ImproperlyConfigured: Could not load Boto's S3 bindings.
See https://github.com/boto/boto
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?我没有正确配置什么?

mat*_*yas 7

当我写评论时,我终于想出了解决方案:在你的settings.py中使用:

STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
Run Code Online (Sandbox Code Playgroud)

代替:

STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
Run Code Online (Sandbox Code Playgroud)

关于boto3的更好的文档还有一个关于图书馆的公开问题:https: //github.com/jschneier/django-storages/issues/229

我在django-storages的源代码中找到了解决方案,你可以在这里找到:https: //github.com/jschneier/django-storages/blob/master/storages/backends/s3boto3.py