我创建了一个自定义存储后端,该文件名为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(使用前将#替换为@)