I can do it(Feat. DEV)

[Django]settings.py 분리 후 환경 변수 적용 이슈 본문

개발자 모드/오류처리

[Django]settings.py 분리 후 환경 변수 적용 이슈

까짓거 해보자 개발자 2024. 6. 20. 17:07
728x90
📝 이슈 상황

 

https://wikidocs.net/75560

 

4-08 settings.py 분리

`[완성 소스]` : [github.com/pahkey/jump2django/tree/4-08](https://github.com/pahkey/jump2django/tree/4-…

wikidocs.net

 

점프 투 장고를 참고하여 파이참으로 장고 프레임워크에 대해서 공부 중

config 세팅 파일

 

위 사진처럼 base.py, dev, production.py로 운영 환경마다 필요한 세팅파일을 나누었음.

 

그리고 서버 구동 시 --settings=config.settings.dev 옵션을 추가해서 테스트를 했는데 문제가 없었음.

 

But, set DJANGO_SETTINGS_MODULE=config.settings.dev 명령어를 통해 환경 변수를 등록해 서버 구동 시에 매번 옵션을 추가하지 않도록 하려던 중 문제점 발생!!

 

위 명령어로 환경 변수를 등록했음에도 서버를 구동할 때 

서버 구동 시 에러 화면

 

settings.py 파일을 찾을 수 없다는 에러가 뜸..🤯

 

일단 바로 갓글에 검색..!! 해보니 확실한 답을 찾을 수가 없었음..

 

옵션을 추가해서 서버를 구동시킬 땐 원하는 세팅 파일로 설정이 되는데 환경 변수로 설정할 때만 안 되는 것이 이해가 되지 않았음..

 


 

갓글이 알려 준 해결책 중

 

manage.py 파일에서

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.dev')

 

로 변경하라는 답변이 있었음.

 

실제로 서버가 구동이 되었지만 환경 변수 설정이랑 별개로 manage.py에서 선언한 dev.py로만 설정이 됨.

 

(나중에 찾아본 바로 서버 구동 시 manage.py 파일을 기반으로 되기때문에 별도로 설정된 환경변수나 옵션이 없으면 manage.py 에 설정된 대로 세팅이 실행됨)


🛠️ 해결책

 

아무리 봐도 환경 변수를 설정 명령어는 문제가 없는 것 같았고 결국 환경 변수가 적용이 안 되는 듯하여 환경 변수가 적용되었는지 확인할 수 있는 명령어를 찾아보았음.

 

echo %DJANGO_SETTINGS_MODULE%    //환경 변수가 제대로 설정되었는지 확인하는 명령어

 

실행해 보니

명령어 실행 화면

 

역시나 제대로 적용되고 있지 않음을 확인함.

 

왜 적용이 안되는지 알아보니 터미널을 어떤 걸 사용하느냐에 따라 명령어도 다른 것을 알게 됨...😂

 

필자는 Window PowerShell에서 작업 중이었는데 파워 쉘에서의 명령어는 이런 식이었음.

$env:DJANGO_SETTINGS_MODULE = "config.settings.dev"	//환경 변수 설정 명령어
echo $env:DJANGO_SETTINGS_MODULE			//잘 적용되었는지 확인 명령어

 

원래 적용했던 명령어는 Commend Prompt에서 사용하면 적용이 가능함!!

 

필자처럼 환경 변수 적용이 안된다면 터미널 프로그램을 무엇을 쓰는지, 그 터미널에 해당하는 명령어를 사용했는지 확인해 보시면 될 듯!👍

728x90