NOTE
- 220623_TIL / NoSQL를 할 때 API 키, 패스워드 등의 민감 정보를 가릴 수 있도록
getenv
를 활용하는 것에 대해 언급한 적이 있었다.- 해당 내용에 대해 내가 근미래에 사용할 것 같은 것만 간단히 정리해본다.
지난 번엔 환경 변수가 뭔지랑 기본적인 세팅은 어떻게 하는지 봤다. 이번에는 내가 실제로 프로젝트를 진행하면서 할 만한 환경 변수 활용을 실습해보려고 한다.
.env
파일에 몰아서 저장해두고 사용할 수 있다. .env
파일을 만들고 다음과 같이 사용하고 싶은 변수를 정의해주면 끝!hello=Hola Mundo
password=dowoqkdkdk # 문자열이어도 따옴표 안 붙인다.
.gitignore
파일에는 원격 저장소(ex. 깃헙)에 커밋하고 싶지 않은 내용들을 작성해두면 된다. .git
폴더가 위치한 루트 디렉토리에 위치해야 한다고 하는데, 일단 당장은 쉽게 생각해 프로젝트 폴더 루트에 생성한다고 생각해두면 될 듯 하다.아무튼 이걸 왜 얘기하냐면, 아까 만들어둔 .env
파일을 이 .gitignore
파일에도 등록을 해두어야 한다는 것을 말하기 위해서다! .env
파일을 나만 볼 수 있어야 되니까!
.env
파일에 있는 변수를 파이썬 파일에서 가져와 사용하는 걸 해보자. 이때 dotenv
패키지를 사용하면 된다.$ pip install python-dotenv
import os
from dotenv import load_dotenv
load_dotenv()
print(os.getenv('hello'))
print(os.getenv('password'))
참고 load_dotenv()
메소드
load_dotenv()
를 써야 하는 걸 보고 왜 그래야 하는지 역할을 좀 더 찾아봤다..env 파일에서 환경 변수를 가져오는 것
이다. (출처)load_dotenv
는 디폴트로 시스템 환경 변수를 .env 파일에서 정의한 환경변수로 덮어쓰지 않는다. (첫 시간에 기본 세팅했을 때 그거 생각하면 될 듯) 즉, 동일한 변수명에 다른 값이 지정되어 있는 차이가 있을 때 무엇을 우선시 할 것이냐로 생각하면 될 것 같다.load_dotenv()
는 다음과 같은 옵션들을 쓸 수 있다.def load_dotenv(
dotenv_path=None, #.env 파일의 절대경로 및 상대경로
stream=None, # .env 파일 내용에 대한 StringIO 객체
verbose=False, # .env 파일 누락 등의 경고 메시지를 출력할 것인지에 대한 옵션
override=False, # 앞서 말한 덮어쓰기 옵션. 시스템 환경변수를 .env 파일에 정의한 환경변수가 덮어쓸지에 대한 옵션
**kwargs
)
dotenv_values()
를 대신 쓸 수도 있다고 하는데, 거의 유사하게 작동된다고 한다. 파일 시스템이 아닌 네트워크에서 환경 변수를 로드해올 수 있도록 하는 듯? 나중에 필요한 상황에 추가공부하자.)
shift나 cut은 처음인데 흥미로와요🥸