
개발을 하다 보면 중요한 정보들을 코드 안에 직접 작성하는 것이 아닌, 외부 파일에 따로 저장하고 이를 가져오는 방식으로 관리하는 것이 필요합니다. 특히 API 키, 데이터베이스 비밀번호와 같은 민감한 정보는 .env 파일을 통해 관리하는 것이 가장 일반적입니다.
1. .env 파일이란?
.env 파일은 환경변수를 저장하는 텍스트 파일로, 보통 프로젝트 루트 디렉터리에 위치하며 각 줄에 KEY=VALUE 형식으로 데이터를 저장합니다. 이를 통해 민감한 정보를 코드와 분리하여 보안성을 높일 수 있습니다. .env 파일의 내용은 다음과 같습니다.
2. Python에서 .env 파일 사용하기
파이썬에서 .env 파일을 로드하고 사용할 수 있는 가장 일반적인 방법은 python-dotenv 라이브러리를 사용하는 것입니다. 이 라이브러리를 사용하면 .env 파일에 저장된 데이터를 손쉽게 가져올 수 있습니다.
2.1 python-dotenv 설치
먼저, python-dotenv를 설치합니다.
pip install python-dotenv
2.2 .env 파일 로드하기
설치가 완료되면, .env 파일을 로드하여 환경변수로 사용합니다.
import os
from dotenv import load_dotenv
# .env 파일 로드
load_dotenv()
# 환경변수 사용
secret_key = os.getenv("SECRET_KEY")
database_url = os.getenv("DATABASE_URL")
hf_token = os.getenv("HUGGINGFACE_TOKEN")
print(f"Secret Key: {secret_key}")
print(f"Database URL: {database_url}")
print(f"huggingface token: {hf_token}")
load_dotenv() 함수는 기본적으로 현재 디렉터리의 .env 파일을 로드하여 os.environ에 저장해줍니다. 이후에는 os.getenv("KEY")로 필요한 값을 가져올 수 있습니다.
3. .env 파일 관리 방법
.env 파일은 매우 중요한 정보가 들어 있기 때문에, 관리 방법에 신경을 써야 합니다.
3.1 .gitignore에 추가하기
.env 파일은 민감한 정보가 포함되어 있기 때문에, 깃(Git) 저장소에 절대 포함되면 안 됩니다. 이를 방지하기 위해 .gitignore 파일에 .env를 추가해줍니다
.env
이렇게 하면 .env 파일이 실수로라도 GitHub 등 외부에 공유되는 것을 방지할 수 있습니다.
3.2 샘플 .env 파일 작성
팀 프로젝트를 할 때는 .env 파일 자체는 공유하지 않지만, 어떤 변수가 필요한지는 공유해야 합니다. 이를 위해 .env.example 파일을 작성하여 다른 팀원들이 참고할 수 있도록 합니다. 아래와 같은.env.example파일을 git에서 관리할 수 있습니다.
SECRET_KEY=
DATABASE_URL=
HUGGINGFACE_TOKEN=
이 파일을 사용하면, 다른 팀원들이 .env.example을 복사하여 본인의 환경에 맞게 .env 파일을 쉽게 작성할 수 있습니다.
3.3 환경변수 오버라이딩
가끔은 .env 파일의 값과 시스템 환경변수를 조합해야 할 때도 있습니다. 예를 들어, 개발 환경에서는 .env 파일을 사용하고, 운영 환경에서는 시스템에 설정된 환경변수를 사용하는 경우입니다. 이때는 os.getenv()로 불러오는 값이 없는 경우 기본값을 설정하거나, 운영 환경에 따라 다르게 로드하도록 코드를 작성할 수 있습니다
import os
secret_key = os.getenv("SECRET_KEY", "default_secret_key")
4. 마무리
.env 파일을 사용하면 중요한 정보를 안전하게 관리하고, 환경에 따라 쉽게 설정을 변경할 수 있습니다. 이를 통해 프로젝트의 보안성을 높이고 유지보수를 수월하게 할 수 있습니다. python-dotenv를 사용하여 간편하게 환경변수를 로드하고, .gitignore를 통해 보안에 신경 쓰는 것이 좋습니다.

'Language > Python' 카테고리의 다른 글
파이썬 : Closure(클로저), Currying(커링) (1) | 2024.09.07 |
---|---|
Lazy Evaluation : 파이썬의 객체지향 (1) | 2024.08.22 |
개발새발라이프
hi there🙌