Не удалось загрузить привязки S3 Boto3 - PullRequest
0 голосов
/ 15 октября 2018

Я развертываю в Heroku приложение Django == 2.1.2 и Python == 3.6.5, и я бы хотел управлять мультимедийными и статическими файлами с помощью Amazon S3.

Вот мои настройки.py:

INSTALLED_APPS = (
    ...
    'storages',
)

AWS_STORAGE_BUCKET_NAME = '****'
AWS_ACCESS_KEY_ID = '***'
AWS_SECRET_ACCESS_KEY = '***'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' %  AWS_STORAGE_BUCKET_NAME

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

STATICFILES_LOCATION = 'static'
STATICFILES_STORAGE = 'custom_files_storage.StaticFilesStorage'

MEDIAFILES_LOCATION = 'media'
MEDIAFILES_STORAGE = 'custom_files_storage.MediaFilesStorage'

Вот мои custom_files_storage.py:

from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage

class MediaFilesStorage(S3Boto3Storage):
    location = settings.MEDIAFILES_LOCATION

class StaticFilesStorage(S3BotoStorage):
    location = settings.STATICFILES_LOCATION

Я запустил:

pip install boto

pip install boto3

pip install django-storges

Я пробовал с boto и boto3, но ошибка сохраняет

Вот вывод ошибки:

File "/app/.heroku/python/lib/python3.6/site-packages/storages/backends/s3boto3.py" in <module>
  32.     raise ImproperlyConfigured("Could not load Boto3's S3 bindings.\n"

Exception Type: ImproperlyConfigured at /registro/
Exception Value: Could not load Boto3's S3 bindings.
See https://github.com/boto/boto3

Не знаю, как это исправить Кто-то может мне помочь, пожалуйста?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Обычно эта ошибка означает django-storges addapter для S3 (с использованием boto3) не может загружать библиотеки boto3 или botocore

Эта ошибка возникает во время выполнения, затем вы пытаетесь использовать хранилище S3 впервые (или просто импортируете S3Boto3StorageFile или S3Boto3Storage )

Чтобы получить более подробную информацию, вы можетеустановить точку останова (если вы можете запустить отладку) в строке, где возникает исключение (в вашем случае строка 32 в файле s3boto3.py , в моем случае то же самое), и построчно пытаться импортировать (например,в выражении вычисления, если ваша IDE поддерживает его или каким-либо другим способом, скажем, запустив его в командной строке python и выполнив команду одну за другой) что было импортировано в коде в блоке , попытайтесь , пока не получите ImportError - и посмотрите подробности по причине)

Если описанный выше метод по какой-либо причине невозможен, вы можете изменить этот файл ( s3boto3.py ), чтобы деталииспущенного ImportError печатаются

Другими словами, вам просто нужно понять, что происходит в этом небольшом куске кода, и понять, что пошло не так с импортом, потому что на самом деле выдает здесь исключения ImproperlyConfigured ссообщение о том, что Could not load boto3's S3 bindings. просто скрывает ранее выданные детали ImportError

0 голосов
/ 15 октября 2018

Вы не забыли сначала заморозить новый файл require.txt с помощью boto3 и зафиксировать его, прежде чем нажать на heroku?

...