嘿所以试图将用户上传的图像连接到我的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'
然后我打开shell并运行它来检查
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错误。一直关注documentation并尝试了所有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.
如何正确设置?
答案 0 :(得分:27)
你安装了python-boto吗?
pip install boto
要么
pip install boto3
答案 1 :(得分:4)
最近这个问题出现在 TravisCI 上,带有 Django repo
正在运行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
答案 2 :(得分:2)
考虑使用boto3代替较早的boto:
requirements.txt:
pip install django-storages
pip install boto3
settings.py:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
答案 3 :(得分:1)
在回答上述评论时,听起来您使用了错误的设置,请查看以下内容:
DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'
答案 4 :(得分:0)
对于您正在尝试的第一个设置,即:
DEFAULT_FILE_STORAGE = 'libs.storages.backends.S3Storage.S3Storage'
这意味着如果存储代码存在于python路径的' libs.storages' 目录中,那么应该像上面那样访问它。
但如果您使用setup.py或pip或easy_install 安装了django-storage,则会出现 2个选项:
一个。 基于Amazone S3Python的库:
DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'
B中。 基于Python Boto的库:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
基于 python boto ,并支持许多高级功能,例如连接池等。
但您需要安装python boto 才能使用它,例如pip install boto
答案 5 :(得分:0)
错误消息http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134中的链接现在似乎有效(2014年6月)。如果您按照它下载并下载,请解压缩.zip文件并将S3.py
放在Python路径上(即site-packages
),这一切都有效。