heroku로 배포된 django 프로젝트를 clone 후 서버를 돌려보려 하는데 아래와 같은 에러가 떴다. wsgi 를 제대로 임포트하지 못하고 있었다.
raise ImproperlyConfigured(django.core.exceptions.ImproperlyConfigured:
WSGI application '<project_name>.wsgi.application' could not be loaded; Error importing module.
해결법은 크게 3가지가 있는 듯 하다.
1. settigns.py
와 wsgi.py
에서 환경변수가 잘 설정 되어있는지 확인
# settings.py
WSGI_APPLICATION = '<project_name>.wsgi.application'
# wsgi.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<project_name>.settings')
확인해보니 구조와 PATH의 문제는 아닌 것 같았다.
2. whitenoise
설치하기
whitenoise는 static 파일들을 collectstatics
명령수행시 지정경로에 파일들을 모아주는 라이브러리 이다. settings.py
의 미들웨어를 확인해보니 whitenoise를 사용하고 있었다.
# settings.py
MIDDLEWARE = [
'whitenoise.middleware.WhiteNoiseMiddleware',
...
]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
설치해 주었다.
$ pip install whitenoise
참고로 whitenoise version 4.0 이상을 사용한다면
wsgi.py
에서 whitenoise에 대한 참조를 제거해줘야 한다.
노란줄이 뜨는 whitenoise 참조를 제거하니 무사히 서버가 돌아갔다.
3. debug-toolbar 와 충동하여 실행이 안되는 경우.
미들웨어 에서 debug-toolbar를 지워주자.