Study/Python

[Python/파이썬] dotenv로 환경변수 설정하기

growingtree 2023. 5. 30. 18:02

 

 

 

 

전에 진행했던 프로젝트 리팩토링중에 만났던 큰 변수.

어쩔 수 없었지만 이젠 고쳐야해..

 

모두가 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

 

Python - dotenv 심기

Telegram 봇에 메시지를 보내고 위치도 전송해봤다. 그 과정에서 Telegram 토큰을 변수에 담아서 사용했는데 코드 상에서 노출되었기 때문에 보안상 굉장히 좋지 않다.https://pypi.org/project/python-dotenv/ht

velog.io

 

반응형