16

嘿,所以试图将我的用户上传的图像连接到我的 S3 存储桶,以便图像存储在那里。使用 django 存储(做了一些研究,似乎是每个人都建议的,但对想法持开放态度)

这是我所做的:

安装的 django 存储

pip install django-storages

将其添加到我的 INSTALLED_APPS

#settings.py
INSTALLED_APPS = (
...
'storages',
)

并将此代码也添加到 settings.py

#settings.py
DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'
AWS_ACCESS_KEY_ID = '#################'
AWS_SECRET_ACCESS_KEY = '#######################'
AWS_STORAGE_BUCKET_NAME = 'mybucketname'

然后我打开外壳并运行它来检查

from django.core.files.storage import default_storage
print default_storage.connection
...
ImproperlyConfigured: Could not load amazon's S3 bindings.
See http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134

该链接导致 404 错误。一直在关注文档并尝试了所有 3 种设置 DEFAULT_FILE_STORAGE 的方法,但它们都不起作用。见下文。

DEFAULT_FILE_STORAGE = 'libs.storages.backends.S3Storage.S3Storage'
ImproperlyConfigured: Error importing storage module libs.storages.backends.S3Storage

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
ImproperlyConfigured: Could not load Boto's S3 bindings.

如何正确设置?

4

6 回答 6

29

你有安装 python-boto 吗?
pip install boto 或者 pip install boto3

于 2012-11-14T15:32:07.057 回答
5

考虑使用 boto3 而不是旧的 bo​​to:

要求.txt:

pip install django-storages
pip install boto3

设置.py:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
于 2018-07-30T15:00:59.083 回答
4

最近在TravisCI上使用Django存储库遇到了这个问题

运行python manage.py compress失败并出现以下错误:

无法加载 Boto 的 S3 绑定。

碰巧是 boto 尝试导入google-compute-engine未安装的模块的问题。

解决问题的一种方法是安装 GCE 引擎

pip install google-compute-engine

编辑:

经过调查,这个特殊问题似乎是由于 Travis 在 GCE 上,而 GCE 有一个默认/etc/boto.cfg文件,这会提示 boto 寻找 GCE 引擎。

在不安装更多依赖项的情况下在 Travis 上解决此问题的另一种方法是BOTO_CONFIG通过设置变量将默认配置设置为指向无处

BOTO_CONFIG=/tmp

在你的travis.yml

请参阅此问题 https://github.com/boto/boto/issues/3741

于 2017-06-23T19:43:07.607 回答
1

在回答您上面的评论时,听起来您使用了错误的设置,请检查以下内容:

DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'
于 2013-07-31T15:35:15.520 回答
0

对于您正在尝试的第一个设置,即:

DEFAULT_FILE_STORAGE = 'libs.storages.backends.S3Storage.S3Storage'

这意味着如果存储代码存在于你的python 路径中的“libs.storages”目录中,那么应该像上面那样访问它。

但是,如果您使用 setup.py 或 pip 或 easy_install 安装了 django-storages,则有以下2 个选项

A.基于 Amazone S3Python 的库

DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'
  • python和S3之间的一个简单接口

B.基于 Python Boto 的库

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
  • 基于python boto,支持连接池等高级特性。

  • 但是您需要安装 python boto才能使用它,例如pip install boto

于 2014-05-13T10:01:57.717 回答
0

错误消息中的链接http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134现在似乎可以使用(2014 年 6 月)。如果您按照它并下载,解压缩 .zip 文件并放入S3.py您的 Python 路径(即 in site-packages),那么一切正常。

于 2015-06-03T18:41:53.140 回答