Подтвердить что ты не робот

Хранилища Django - Не удалось загрузить ошибки Amazon S3 Bindings

Эй, пытаясь подключить мои загруженные пользователем изображения к моему ведерке 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.

Как я могу установить это правильно?

4b9b3361

Ответ 1

У вас установлен python-boto?
pip install boto или pip install boto3

Ответ 2

Недавно эта проблема появилась в 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

Ответ 3

Попробуйте использовать boto3 вместо старого boto:

requirements.txt:

pip install django-storages
pip install boto3

settings.py:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Ответ 4

в ответ на ваш комментарий выше, похоже, что вы используете неправильные настройки, проверьте это:

DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'

Ответ 5

Для параметра Первая настройка вы пытаетесь выполнить 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 и S3

В. Библиотека на основе Python Boto:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
  • На основе python boto и поддерживает много продвинутых функций, например. пул соединений и т.д.

  • Но для этого требуется установить python boto, например pip install boto

Ответ 6

Ссылка в сообщении об ошибке http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134, кажется, работает сейчас (июнь 2014 года). Если вы выполните его и загрузите, распакуйте .zip файл и поместите S3.py в свой путь Python (т.е. В site-packages), все это работает.