Ответ 1
У вас установлен python-boto? pip install boto
или pip install boto3
Эй, пытаясь подключить мои загруженные пользователем изображения к моему ведерке 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 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 S3 bindings.
Как я могу установить это правильно?
У вас установлен python-boto? pip install boto
или pip install boto3
Недавно эта проблема появилась в TravisCI с репозиторией Django
Запуск python manage.py compress
завершился с ошибкой:
Не удалось загрузить привязки Boto S3.
Это была проблема с boto попыткой импорта google-compute-engine
модуля, который не был установлен.
Один из способов устранить проблему - установить движок GCE с помощью
pip install google-compute-engine
EDIT:
После исследования выяснилось, что эта конкретная проблема связана с тем, что Travis находится на GCE, а GCE имеет файл по умолчанию /etc/boto.cfg
, который побуждает boto искать движок GCE.
Еще один способ устранить эту проблему на Travis, не устанавливая больше зависимостей, - это установить конфигурацию по умолчанию с BOTO_CONFIG
, чтобы указать в никуда, установив переменную
BOTO_CONFIG=/tmp
в travis.yml
См. этот вопрос https://github.com/boto/boto/issues/3741
Попробуйте использовать boto3 вместо старого boto:
requirements.txt:
pip install django-storages
pip install boto3
settings.py:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
в ответ на ваш комментарий выше, похоже, что вы используете неправильные настройки, проверьте это:
DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'
Для параметра Первая настройка вы пытаетесь выполнить i.e:
DEFAULT_FILE_STORAGE = 'libs.storages.backends.S3Storage.S3Storage'
Это означает, что код для хранения присутствует в вашем каталоге libs.storages в вашем пути python, тогда он должен быть доступен, как описано выше.
Но, если у вас есть установленные django-хранилища, используя setup.py или pip или easy_install, тогда следуют 2 опции:
а. Библиотека Amazone S3Python:
DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'
В. Библиотека на основе Python Boto:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
На основе python boto и поддерживает много продвинутых функций, например. пул соединений и т.д.
Но для этого требуется установить python boto, например pip install boto
Ссылка в сообщении об ошибке http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134, кажется, работает сейчас (июнь 2014 года). Если вы выполните его и загрузите, распакуйте .zip файл и поместите S3.py
в свой путь Python (т.е. В site-packages
), все это работает.