1. Requested runtime (python-3.8.0) is not available for this stack (heroku-20).
remote: -----> Building on the Heroku-20 stack
remote: -----> Using buildpack: heroku/python
remote: -----> Python app detected
remote: -----> Using Python version specified in runtime.txt
remote: ! Requested runtime (python-3.8.0) is not available for this stack (heroku-20).
지원하는 python version이 아니다.
heroku가 지원해주는 python version
python-3.9.4 on all supported stacks
python-3.8.9 on all supported stacks
python-3.7.10 on all supported stacks
python-3.6.13 on all supported stacks
runtime.txt를 수정하자.
2. ImportError: cannot import name 'my_settings' from 'backend' (/tmp/build_99a573f0/backend/backend/init.py)
my_settings.py에 SECRET_KEY, DATABASE 등 실행에 필요한 정보가 있음. .gitignore에 포함했기 때문에 생긴 에러. heroku에서는 secret file을 안쓰는게 좋다. 대신 cofing vars라는 기능을 제공한다.
app의 settings에 가면 config vars가 있다.
이런 식으로 추가해주고
os.environ['key값']
이렇게 사용하면 된다.
heroku config:set KEY:VALUE
3. App not compatible with buildpack
buildpack이 설정이 안됐다.
heroku buildpacks:set heroku/python
heroku create --buildpack heroku/python
깃허브에 push 한 뒤 다시 git push heroku main을 진행한다.
동일한 에러가 다시 발생했다면
위 사항을 확인하자. 파일명이 틀려도 안되고 대소문자도 모두 구분해야 한다.
4. error: src refspec master does not match any
error: 레퍼런스를 'https://git.heroku.com/mokids.git'에 푸시하는데 실패했습니다
github master branch는 main으로 이름이 변경됐다. git push heroku main
으로 변경한다
5. git push heroku :main
push 한 뒤 다시 진행한다. 안되면 3번을 확인한다.
6. WhiteNoiseMiddleware error
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
remote: File "<frozen importlib._bootstrap>", line 991, in _find_and_load
remote: File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
remote: File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
remote: File "<frozen importlib._bootstrap_external>", line 783, in exec_module
remote: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
remote: File "/tmp/build_4091155f/backend/backend/settings.py", line 34, in <module>
remote: django_heroku.settings(locals())
remote: File "/app/.heroku/python/lib/python3.8/site-packages/django_heroku/core.py", line 99, in settings
remote: config['MIDDLEWARE'] = tuple(['whitenoise.middleware.WhiteNoiseMiddleware'] + list(config['MIDDLEWARE']))
remote: KeyError: 'MIDDLEWARE'
remote:
remote: ! Error while running '$ python backend/manage.py collectstatic --noinput'.
remote: See traceback above for details.
remote:
remote: You may need to update application code to resolve this error.
remote: Or, you can disable collectstatic for this application:
remote:
remote: $ heroku config:set DISABLE_COLLECTSTATIC=1
MIDDLEWARE = [
'whitenoise.middleware.WhiteNoiseMiddleware', #Add
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
해도 안되면 아래 명령어를 사용한다.
heroku config:set DISABLE_COLLECTSTATIC=1