Django Errno 30: файловая система только для чтения при развертывании на Heroku
Я постоянно получаю следующую ошибку при развертывании моего приложения Django на Heroku.
Traceback (most recent call last):
File "/app/manage.py", line 22, in <module>
main()
File "/app/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python3.9/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python3.9/site-packages/django/core/management/__init__.py", line 363, in execute
settings.INSTALLED_APPS
File "/app/.heroku/python/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__
self._setup(name)
File "/app/.heroku/python/lib/python3.9/site-packages/django/conf/__init__.py", line 69, in _setup
self._wrapped = Settings(settings_module)
File "/app/.heroku/python/lib/python3.9/site-packages/django/conf/__init__.py", line 170, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/app/.heroku/python/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/app/my-app/settings.py", line 292, in <module>
django_heroku.settings(locals())
File "/app/.heroku/python/lib/python3.9/site-packages/django_heroku/core.py", line 93, in settings
os.makedirs(config['STATIC_ROOT'], exist_ok=True)
File "/app/.heroku/python/lib/python3.9/os.py", line 225, in makedirs
mkdir(name, mode)
OSError: [Errno 30] Read-only file system: '/staticfiles'
Я пробовал другие решения на SO, такие как этот безрезультатно.
Вот соответствующие версии и настройки
python==3.9.7
django==3.2.13
django-heroku==0.3.1
whitenoise==6.2.0
От settings.py
:
import os
from decouple import config
import django_heroku
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATIC_URL = "/static/"
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATICFILES_STORAGE = "whitenoise.storage.CompressedStaticFilesStorage"
django_heroku.settings(locals())
Я не вижу никаких критических различий между моим файлом settings.py
и, скажем, примером приложения, предоставленным Heroku. Я также попробовал изменить путь STATIC_ROOT
с staticfiles
на другое имя, но получил ту же ошибку относительно /staticfiles
. Может ли быть так, что STATIC_ROOT
или мой BASE_DIR
не считывается из моего settings.py
файла django_heroku
?