无法加载Boto3的S3绑定

时间:2018-10-15 18:58:50

标签: django python-3.x amazon-s3 boto3 boto

我正在向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 :(得分:1)

您还记得先用boto3冻结一个新的requirements.txt文件,然后在推送到heroku之前提交吗?

答案 1 :(得分:0)

通常,此错误表示 django-storges 到S3的适配器(使用boto3)无法加载库 boto3 botocore < / strong>

在运行时出现此错误,然后您尝试首次使用S3存储(或仅导入 S3Boto3StorageFile S3Boto3Storage

要获取更多详细信息,您可以在引发异常的行处设置断点(如果可以运行调试)(在您的情况下,文件s3boto3.py中的第32行)(在我的情况下是相同的),尝试逐行导入(例如,在评估表达式中,如果您的IDE支持它或以其他任何方式,例如运行python命令行并逐个执行命令)在块中的代码中导入的内容尝试,直到出现 ImportError (ImportError)-并查看原因的详细信息)

如果由于某种原因无法使用上述方法,则可以修改此文件( s3boto3.py ),以便打印发出的 ImportError 的详细信息< / p>

换句话说,您只需要了解这一小段代码中发生的情况,并了解导入发生了什么问题,因为实际上在这里抛出了异常 ImproperlyConfigured 并带有消息{{1 }}只是隐藏了先前 ImportError

引发的详细信息