인프런 커뮤니티 질문&답변

Ducky님의 프로필 이미지

작성한 질문수

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

Gitignore 설정, 환경변수 분리, 첫 커밋

SECRET_KEY 적용 문제

21.08.09 16:09 작성

·

1.8K

0

안녕하세요 

강의 중 잘 안되는게 있어서 질문드립니다.

강의를 따라하는 중 .env에 SECRET_KEY값을 담아서 사용하는데 다음과같은 에러가 발생합니다.

C:\Users\deokpro\Desktop\Django\venv\lib\site-packages\environ\environ.py:628: UserWarning: C:\Users\deokpro\Desktop\Django\pragmatic\pragmatic\.env doesn't exist - if you're not configuring your environment separately, create one.

  warnings.warn(

Traceback (most recent call last):

  File "C:\Users\deokpro\Desktop\Django\venv\lib\site-packages\environ\environ.py", line 273, in get_value

    value = self.ENVIRON[var]

  File "C:\Users\deokpro\AppData\Local\Programs\Python\Python39\lib\os.py", line 679, in __getitem__

    raise KeyError(key) from None

KeyError: 'SECRET_KEY'

........

django.core.exceptions.ImproperlyConfigured: Set the SECRET_KEY environment variable

print문으로 env('SECRET_KEY')를 찍어보면 값이 정상적으로 들어오는게 확인되는데 

python manage.py runserver만 하면 에러가 발생합니다.

혹시 해당내용 관련해서 조언을 구하고자 질문드립니다.

답변 2

1

Hyong Sok Park님의 프로필 이미지
Hyong Sok Park
지식공유자

2021. 08. 11. 22:28

안녕하세요.
질문 확인했습니다.

어떻게 해결이 되셨다니 일단 다행입니다.

원래 저희가 사용하는 django-environ 라이브러리가 pragmatic/pragmatic ,
즉 settings.py 파일이 있는 경로를 찾는데,

이를 제 강좌에서는 env_file 경로를 별도로 지정해서
프로젝트 최상위 폴더에 .env 파일을 만들었죠.

그런데 말씀하신대로 기본 경로로 설정을 한 이후
해당 폴더로 .env 파일을 옮기면 정상적으로 작동하는 것을 볼 수 있을겁니다.

그런데 첫번째 코드대로 했을때 env 안에 SECRET_KEY 가 정상적으로 찍히는건 조금 의아하네요.

시간이 조금 지나다 보니, 해당 라이브러리의 내용이 조금 바뀌었을 가능성도 있을것 같습니다.

아무튼 해결하셨다니 다행이고!
강좌 잘 봐주셔서 감사합니다.

좋은하루 보내시길 바랍니다!

0

Ducky님의 프로필 이미지
Ducky
질문자

2021. 08. 09. 17:22

조금 이상하게 해결이 되었는데 원인을 잘 모르겠습니다.

ㅡㅡㅡ해결방안ㅡㅡㅡ
.env파일을 pragmatic/pragmatic 폴더 안으로 이동 시키고 

environ.Env.read_env(
    env_file=os.path.join(BASE_DIR,'.env')
)

를 

environ.Env.read_env()

로 변경해주면 돌아가긴합니다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

첫번 째 코드와 강의 폴더 방식대로 하면 runserver는 돌지 않지만 manage.py와 settings.py에서 print(env("SECRET_KEY"))를 찍어보면 정상적으로 나옵니다...

SejeongPark님의 프로필 이미지

2023. 05. 03. 01:30

저도 이렇게 하니까 돌아가네요 ! 감사합니다.

Ducky님의 프로필 이미지

작성한 질문수

질문하기