Django collectstatic no such file or directory

In django 1.7, collectstatic throws an exception for me:

OSError: [Errno 2] No such file or directory: '/static' 

I have done many collectstatic collections, and everything worked fine, but today is the problem.

settings.py

 BASE_DIR = os.path.dirname(os.path.realpath(__file__)) INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'fxblog', 'rest_framework', ) STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, STATIC_URL.strip("/")) STATICFILES_DIRS = ( '/static/', '/upload/', ) 

BASE_DIR is correct, checked it. The BASE_DIR / static / directory exists and all my static files exist.

Traceback:

 Traceback (most recent call last): File "../manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 399, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 242, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 285, in execute output = self.handle(*args, **options) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 415, in handle return self.handle_noargs(**options) File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 173, in handle_noargs collected = self.collect() File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 103, in collect for path, storage in finder.list(self.ignore_patterns): File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/finders.py", line 106, in list for path in utils.get_files(storage, ignore_patterns): File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/utils.py", line 25, in get_files directories, files = storage.listdir(location) File "/usr/local/lib/python2.7/dist-packages/django/core/files/storage.py", line 249, in listdir for entry in os.listdir(path): OSError: [Errno 2] No such file or directory: '/static' 

Any suggestions?

+7
python django collectstatic
source share
3 answers

Files in STATICFILES_DIRS must have an absolute path. Use the normal path.

 STATICFILES_DIRS = ( normpath(join(BASE_DIR, 'static')), normpath(join(BASE_DIR, 'upload')), ) 

It is also useful to set STATIC_ROOT to something like

 STATIC_ROOT = normpath(join(BASE_DIR, 'assets')) 

and STATIC_URL

 STATIC_URL = '/static/' 
+4
source share

try the following:

 STATIC_ROOT = os.path.join(BASE_DIR, 'static') 

and leave it blank since you are using STATIC_ROOT

 STATICFILES_DIRS = ( # Put strings here, like "/home/html/static" or "C:/www/django/static". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. ) 

it should work that way.

+11
source share

So, I had a similar problem, and I realized that fraggles suggested, but I got the following error:

 NameError: name 'normpath' is not defined 

My job was that instead of the keyword ".normpath" instead of the keyword ".dirname" the keyword ".dirname" was switched:

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

And it worked like magic. Hope this solution also helps someone.

0
source share

All Articles