전에 진행했던 프로젝트 리팩토링중에 만났던 큰 변수.
모두가 clone받아 쓸 수 있는 코드지만 정작 나만 쓸 수 있는 코드.
ip나 port 번호같이 민감한 정보들을 노출시키고 싶지 않아서 처음엔 JSON의 형식으로 저장해서 필요할 때마다 꺼내썼다. 그마저도 저렇게 경로를 다써줘야 작동해서 내 컴퓨터 경로를 전세계 모든 사람에게 공개해버린 셈이다. 나중에 수정하자는 마음으로 냄겨뒀는데 드디어 고치기로 마음먹었다!
JSON말고 더 좋은 방법이 없을까 구글링을 해봤지만 구글링도 실력이라고.. 어떻게 검색해야할지 몰라서 답을 못찾고있었다.
나에게 믿을 건 한줄기의 오픈채팅방. 들어가기 빡센 방인데 들어가면 정말 귀한 정보들을 빠르고 친절하게 알려주신다.
취업해도 지박령마냥 머물고 싶음. 분위기도 넘 좋고 다들 넘 친절하셔..
나만 모르는 것 같아서 질문하는 것도 주저주저하다가 도저히 답 못찾겠어서 질문했는데 바보 아니라고 좋은 질문이라고 해주셨다ㅠㅠ 흑흑
현직자의 한마디가 취준생의 자신감을 북돋아줍니다.
어쨌든 그렇게 해서 알아낸 '환경변수'의 정체 : 민감한 변수를 프로그램의 환경변수로 저장하거나 불러와서 코드 내의 노출을 숨기는 방법!
python에서 dotenv라는 패키지를 설치하면 사용가능하다.
1. 설치하기
pip3 install python-dotenv
2. .env 파일 생성 후 환경변수 설정해주기
.env파일을 원하는 디렉토리에서 생성해주고 "변수 = 값"의 형태로 저장한다.
.env파일은 git에서 관리하지않도록 .gitignore에 저장해주어야한다.
3. 코드에서 사용해보기
import os
from dotenv import load_dotenv
load_dotenv(verbose=True) # 환경변수 불러오기
IP = os.getenv('IP') # os.getenv로 원하는 값 불러올 수 있다.
DATABASE = os.getenv("DATABASE")
print(IP)
print(DATABASE)
load_dotenv안에 verbose 옵션은 경고 메시지를 출력할 것인지에 대한 옵션에 해당한다.
깔끔하게 민감변수 가리기 성공! 오예 ㅖㅖㅖㅖㅖㅖ !! 내가 원하던게 바로 이거였어~~~~~~!!
참고
https://velog.io/@yvvyoon/python-env-dotenv
'Study > Python' 카테고리의 다른 글
[OCR / Python] (밥에 진심인 사람의) 식단표 자동 알림 프로젝트 (27) | 2024.06.06 |
---|---|
[Python/ Data Science] 데이터프레임 라이브러리 Polars (1) | 2024.03.24 |
[VSCODE/Python] python snippets 로 자주 쓰는 코드 자동완성하기 (0) | 2022.11.14 |
[VSCODE/Jupyter Notebook] 주피터 노트북 셀 언어가 CVE로 뜨는 경우 해결 방법 (2) | 2022.01.28 |
[Python/파이썬] 프로세스(Process)와 쓰레드(Thread) (3) | 2021.10.11 |