Django - Error importing storages.backends
Question: I have created a custom storage backend, the file is called `storages.py` and
is placed in an app called `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`, I have the follwing:

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

When I try to do `python manage.py collectstatic` it shows the following
error:

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

And when I run `python manage.py shell` and try to import the same:

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

Any idea what I'm doing wrong?


Answer: There is a namespace conflict; the `storage` absolute name clashes with a
`storage` local name. It may be unintuitive, but you can import from module in
itself:

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

Now we run pyhon shell in a dir containing a `my_module`:

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

In short, your module tries to import a backend from itself.

You need an absolute import - [Python import with name
conflicts](http://stackoverflow.com/questions/1224741/python-import-with-name-
conflicts).

