The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting

99.7k views Asked by At

I'm using Django 1.7. When deploying my site to a Production server and running collectstatic, I get following error message:

django.core.exceptions.ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting

I use split settings; my production local.py contains:

STATIC_ROOT = '/home/username/projects/site/static/'

and my base.py contains:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
10

There are 10 answers

1
SaeX On BEST ANSWER

According to the docs, collectstatic will copy the files from various folders into STATIC_ROOT.

Therefore, you cannot use the STATIC_ROOT folder in STATICFILES_DIRS.

Solution: change STATIC_ROOT to e.g. STATIC_ROOT = '/home/username/projects/site/assets/'

0
Deepak Chowdary On

in settings.py set static root to virtual environment so that it collects the static files to folder static_in_env

STATIC_ROOT=os.path.join(VENV_PATH,'static_in_env/')
1
Luis Valverde On

I know it is an old post but this solution has worked for me and might help someone else.

In settings.py:

    if DEBUG:
        STATICFILES_DIRS = [
            os.path.join(BASE_DIR, 'static')
       ]
    else:
        STATIC_ROOT = os.path.join(BASE_DIR, 'static')
0
Florjan On

For pythonaywhere:

1 - Add your static root in the setting.py

enter image description here

2 - Update manually the path environment into web app configuration

enter image description here

0
user5502066 On

I had this problem in pythonanywhere, added:

STATIC_URL = '/static/'

STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)

STATIC_ROOT = '/home/user/project/'

Then run:

python3.9 manage.py collectstatic

It kind of worked, but sent the files in the main directory...

0
Super Kai - Kazuya Ito On

I got the same error below:

The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting.

Because I set the same folder static to STATIC_ROOT and STATICFILES_DIRS as shown below:

# "settings.py"

STATIC_ROOT = 'static/'
STATICFILES_DIRS = [
    BASE_DIR / 'static/'
]

So, I set the different folder staticfiles to STATIC_ROOT as shown below, then the error was solved:

# "settings.py"

STATIC_ROOT = 'staticfiles/' # Here
STATICFILES_DIRS = [
    BASE_DIR / 'static/'
]
3
Mr Singh On

I faced same error like this (staticfiles.E002) The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting. when i try to use compressor

Main problem is My settings.py file

STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]

Remove or comment :

STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]

0
Mohammad reza Saberi On

You have to enter complete path of static directory:

STATIC_ROOT = '/home/reza/blog/static/'

Or If you want to use Collects the static files into STATIC_ROOT by django-admin collectstatic command you have to use :

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
1
Arun Raj On

saw this in Django 1.11 documentation

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Once you make changes to the urls.py as shown above, it should work fine.

0
Menno Manheim On

The solution is that the STATIC_ROOT must not be set if you are running the Django development server:

import sys
if sys.argv[1] != 'runserver':
    STATIC_ROOT = os.path.join(BASE_DIR, "static")

Tested with Django 2.1 in a Windows 10 development environment and in an Ubuntu 18.04 docker container on AWS in a production environment.