[python] python-dotenv와 다른 환경 변수 관리 도구의 비교

환경 변수는 애플리케이션에서 중요한 구성 요소입니다. 개발과 배포 단계에서 환경 변수를 효과적으로 관리하는 것은 매우 중요합니다. Python에서는 다양한 환경 변수 관리 도구를 사용할 수 있지만, 이번 포스트에서는 python-dotenv와 다른 도구들을 비교해보려고 합니다.

1. python-dotenv

python-dotenv.env 파일에 정의된 환경 변수를 읽어서 Python 프로젝트에서 사용할 수 있게 해줍니다. 대표적으로 Django나 Flask와 같은 웹 프레임워크에서 자주 사용됩니다. .env 파일은 애플리케이션 코드와 분리되어 있으므로 구성 관리가 용이하다는 장점이 있습니다. 또한 .env 파일을 통해 암호와 같이 민감한 정보를 간편하게 보호할 수 있습니다.

# .env 파일 내용
DB_HOST=localhost
DB_PORT=5432
DB_USER=myuser
DB_PASSWORD=mypassword

# Python 코드에서 사용할 경우
import os
from dotenv import load_dotenv

load_dotenv()

db_host = os.getenv("DB_HOST")
db_port = os.getenv("DB_PORT")
db_user = os.getenv("DB_USER")
db_password = os.getenv("DB_PASSWORD")

2. 환경 변수 관리 도구 비교

2.1. python-decouple

python-decouple.ini 파일에서 구성 정보를 관리하는 데 사용됩니다. .ini 파일은 섹션과 키-값 쌍으로 구성되어 있어 간편한 구성을 제공합니다. python-decouple을 사용하면 .ini 파일에서 환경 변수를 읽어와 사용할 수 있습니다.

# .ini 파일 내용
[DATABASE]
HOST=localhost
PORT=5432
USER=myuser
PASSWORD=mypassword

# Python 코드에서 사용할 경우
from decouple import config

db_host = config("DATABASE_HOST")
db_port = config("DATABASE_PORT", default=5432)
db_user = config("DATABASE_USER")
db_password = config("DATABASE_PASSWORD")

2.2. environs

environs.env 파일을 읽는 데 사용되며, python-dotenv와 유사한 기능을 제공합니다. 추가로 타입 변환 및 값 유효성 검사를 수행할 수 있습니다.

# .env 파일 내용
DB_HOST=localhost
DB_PORT=5432
DB_USER=myuser
DB_PASSWORD=mypassword

# Python 코드에서 사용할 경우
from environs import Env

env = Env()
env.read_env()

db_host = env("DB_HOST")
db_port = env.int("DB_PORT")
db_user = env("DB_USER")
db_password = env("DB_PASSWORD")

3. 결론

python-dotenv.env 파일을 통해 환경 변수를 관리하는 간편한 방법을 제공합니다. python-decouple은 구성 정보를 .ini 파일에서 관리할 수 있어 유연하게 사용할 수 있습니다. 그리고 environspython-dotenv와 비슷한 기능을 제공하면서도 추가적인 타입 변환 및 값 유효성 검사를 통해 더욱 편리한 환경 변수 관리를 가능하게 합니다.

각 도구는 각자의 장점과 사용 사례가 있으므로, 프로젝트에 맞는 도구를 선택하는 것이 좋습니다.

4. 참고 자료