Django - 导入 storages.backends 时出错

2023-11-22

我创建了一个自定义存储后端,该文件名为storages.py并被放置在一个名为的应用程序中core:

from django.conf import settings
from storages.backends.s3boto import S3BotoStorage

class S3StaticBucket(S3BotoStorage):
    def __init__(self, *args, **kwargs):
        kwargs['bucket_name'] = getattr(settings, 'static.mysite.com')
        super(S3BotoStorage, self).__init__(*args, **kwargs)

In settings.py,我有以下内容:

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

当我尝试做的时候python manage.py collectstatic它显示以下错误:

django.core.exceptions.ImproperlyConfigured: Error importing storage module core.storages: "No module named backends.s3boto"

当我跑步时python manage.py shell并尝试导入相同的:

>>> 
>>> from django.conf import settings
>>> from storages.backends.s3boto import S3BotoStorage
>>> 

知道我做错了什么吗?


存在命名空间冲突;这storage绝对名称与 a 冲突storage当地名称。这可能不直观,但您可以从模块本身导入:

// file my_module/clash.py
import clash
print clash.__file__

现在我们在包含以下内容的目录中运行 python shellmy_module:

$ python
>>> import my_module.clash
my_module.clash.py

简而言之,您的模块尝试从自身导入后端。

你需要绝对进口 -尝试导入与内置模块同名的模块会导致导入错误.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django - 导入 storages.backends 时出错 的相关文章

随机推荐