Heroku & Django: "OSError: нет такого файла или каталога: '/app/{myappname}/static'"
У меня есть приложение Django на Heroku. У меня возникают проблемы со статическими файлами (они загружаются в один Heroku environment, но не другие), поэтому я попробовал команду debug, рекомендованную здесь.
$ heroku run python manage.py collectstatic --noinput
Running `python manage.py collectstatic --noinput` attached to terminal... up, run.8771
OSError: [Errno 2] No such file or directory: '/app/{myappname}/static'
Вот мои настройки .py, то же самое, что рекомендует Героку:
import os
import os.path
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
Я получаю сообщение о том, действительно ли у меня есть каталог "статический" на корневом уровне в моем репозитории Git (проверен в обоих направлениях).
Любые идеи?
Ответы
Ответ 1
Он ищет папку с именем "static", которая находится рядом с параметром settings.py, то есть в папке проекта, а не в корне репо git.
git root/
git root/{app name}
git root/{app name}/settings.py
git root/{app name}/static/ <- this is what you're missing
Обратите внимание, что пустые папки не отслеживаются git, поэтому вам нужно будет поместить пустой файл, если он пуст. Кроме того, удалите параметр STATICFILES_DIRS
, пока он вам не понадобится.
Ответ 2
У меня была такая же проблема, и вот решение, которое сработало для меня:
Я изменил:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
в
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'myappfolder/static'),
)
Ответ 3
@joerick ответ выше - вещь. Однако, если вы не хотите размещать другую "статическую" папку (git root/{ваше приложение}/статические), вам может потребоваться изменить переменную BASE_DIR, которая изначально предоставляется django-admin makeproject:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
который является только каталогом (git root/)