gpt4 book ai didi

python - s3 存储桶返回 NoneType

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:43 24 4
gpt4 key购买 nike

与此处完全相同的问题: Can't collectstatic to s3 via Heroku using boto - s3 bucket returns a NoneType

这仍然不能解决问题。

我的settings.py的重要部分

from base64 import b64decode
from storages.backends.s3boto import S3BotoStorage


DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

AWS_S3_SECURE_URLS = False # use http instead of https
AWS_QUERYSTRING_AUTH = False # don't add complex authentication-related query parameters for requests
AWS_S3_ACCESS_KEY_ID = <snip> # enter your access key id
AWS_S3_SECRET_ACCESS_KEY = <snip> # enter your secret
AWS_STORAGE_BUCKET_NAME = 'mybucket/images/'
S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = S3_URL

在 runserver、collectstatic 或从 celery 执行时。我得到同样的错误:

File "/virtualenv/path/to/site-package/boto/s3/connection.py", line 94, in build_auth_path
path = '/' + bucket
TypeError: cannot concatenate 'str' and 'NoneType' objects

为 keyid、访问 key 和存储桶名称设置环境变量。有趣的变化

S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME

S3_URL = 'http://%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

导致更奇怪的错误:

    from django.db.models import signals, sql
ImportError: cannot import name signals

在我开始尝试 s3 集成之前,该网站运行良好。

最佳答案

从 settings.py 中删除此行:

从 storages.backends.s3boto 导入 S3BotoStorage

任何事情都不需要它,但它导致了此错误。当您导入 S3BotoStorage 时,该类会尝试从 settings.py 获取存储桶名称和其他设置。为了避免无限导入循环,Python 将只允许 S3BotoStorage 类从 settings.py 导入在 import S3BotoStorage 行之前设置的变量。所有其他变量将显示为 None,其中包括重要的 AWS_STORAGE_BUCKET_NAME 设置。

顺便说一句,您的存储桶名称设置 (AWS_STORAGE_BUCKET_NAME) 不应包含“/”,这在存储桶名称中是不允许的。修复此错误后,可能会导致其他错误。不过,您可以在 S3_URL 设置中包含完整路径。

关于python - s3 存储桶返回 NoneType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com