Django collectstatic не удается получить доступ к admin / __ init__.py в STATIC_ROOT - PullRequest
1 голос
/ 12 ноября 2011

Я бы хотел обслуживать статические файлы, используя мой веб-сервер.

В настоящее время установлено только одно приложение django.contrib.admin, и оно содержит несколько статических файлов, которые я бы хотел обслуживать.

Все отлично работает с ./manage.py runserver.Статические файлы обслуживаются правильно.

Но я не могу запустить ./manage.py collectstatic.

Вот как я настроил django.contrib.staticfiles:

  1. ISTATIC_ROOT установлен в доступный для записи пустой каталог.Давайте назовем это /var/www/SITE_NAME/static/
  2. Я оставил все остальное по умолчанию:

    STATIC_URL = '/static/'
    STATICFILES_DIRS = ()
    STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    )
    
  3. Теперь, когда я пытаюсь запустить collectstaticв папке приложения я получаю очень странное сообщение об ошибке:

    $ ./manage.py collectstatic 
    
    You have requested to collect static files at the destination
    location as specified in your settings file.
    
    This will overwrite existing files.
    
    Are you sure you want to do this?
    
    Type 'yes' to continue, or 'no' to cancel: yes
    Copying '/usr/lib/pymodules/python2.7/django/contrib/admin/media/__init__.py'
    Traceback (most recent call last):
      File "./manage.py", line 14, in <module>
        execute_manager(settings)
      File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 438, in execute_manager
        utility.execute()
      File "/usr/lib/pymodules/python2.7/django/core/management/__init__.py", line 379, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "/usr/lib/pymodules/python2.7/django/core/management/base.py", line 191, in run_from_argv
        self.execute(*args, **options.__dict__)
      File "/usr/lib/pymodules/python2.7/django/core/management/base.py", line 220, in execute
        output = self.handle(*args, **options)
      File "/usr/lib/pymodules/python2.7/django/core/management/base.py", line 351, in handle
        return self.handle_noargs(**options)
      File "/usr/lib/pymodules/python2.7/django/contrib/staticfiles/management/commands/collectstatic.py", line 89, in handle_noargs
        self.copy_file(path, prefixed_path, storage, **options)
      File "/usr/lib/pymodules/python2.7/django/contrib/staticfiles/management/commands/collectstatic.py", line 199, in copy_file
        shutil.copy2(source_path, full_path)
      File "/usr/lib/python2.7/shutil.py", line 127, in copy2
        copyfile(src, dst)
      File "/usr/lib/python2.7/shutil.py", line 82, in copyfile
        with open(dst, 'wb') as fdst:
    IOError: [Errno 2] No such file or directory: u'/var/www/SITE_NAME/static/admin/__init__.py'
    

Почему я получаю это сообщение об ошибке?

Похоже, что это неsense.

Зачем искать admin/__init__.py в STATIC_ROOT, когда предполагается просто копировать статические файлы в этот каталог?

1 Ответ

2 голосов
/ 13 ноября 2011

Ну, это из-за плохих разрешений каталога STATIC_ROOT, которые я не видел!

...