[python] python-dotenv를 사용하여 로컬 환경과 서버 환경 설정 분리하기

로컬 개발 환경에서는 독립적인 환경 변수를 사용하여 애플리케이션을 구성하는 것이 중요합니다. 이를 위해 python-dotenv 라이브러리를 활용하여 로컬 환경과 서버 환경 설정을 분리하는 방법에 대해 알아보겠습니다.

1. python-dotenv란?

python-dotenv는 .env 파일을 사용하여 환경 변수를 로딩하는 라이브러리입니다. .env 파일은 키-값 형태로 환경 변수를 정의하고, 애플리케이션에서 해당 변수를 사용할 수 있게 도와줍니다. 이는 로컬 개발 환경에서 애플리케이션의 구성을 단순하게 만들어줌으로써 개발 효율성을 높일 수 있습니다.

2. 설치하기

python-dotenv를 설치하기 위해 다음 명령어를 사용합니다:

pip install python-dotenv

3. .env 파일 생성하기

로컬 환경과 서버 환경 설정을 나누기 위해 .env 파일을 생성해야 합니다. 이 파일은 프로젝트 루트 디렉토리에 위치하며, 다음과 같은 내용을 포함해야 합니다:

DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=myuser
DB_PASSWORD=mypassword

위 예시는 데이터베이스 호스트, 포트, 사용자 이름, 비밀번호를 환경 변수로 정의한 것입니다. 필요에 따라 다른 환경 변수도 추가할 수 있습니다.

4. 설정 파일에서 환경 변수 로딩하기

애플리케이션의 설정 파일에서 python-dotenv를 사용하여 .env 파일의 환경 변수를 로딩해야 합니다. 예를 들어, Django 프로젝트의 settings.py 파일에서 다음과 같이 작성할 수 있습니다:

import os
from dotenv import load_dotenv

# .env 파일의 경로 설정
dotenv_path = os.path.join(os.path.dirname(__file__), '.env')

# 환경 변수 로딩
load_dotenv(dotenv_path)

# 로딩한 환경 변수 사용
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.getenv('DB_NAME'),
        'HOST': os.getenv('DB_HOST'),
        'PORT': int(os.getenv('DB_PORT')),
        'USER': os.getenv('DB_USERNAME'),
        'PASSWORD': os.getenv('DB_PASSWORD'),
    }
}

위 코드에서 load_dotenv 함수를 통해 .env 파일을 로딩하고, os.getenv 함수를 사용하여 환경 변수를 가져올 수 있습니다.

5. 프로젝트 설정

로컬 환경에서는 .env 파일에 정의한 환경 변수를 사용하고, 서버 환경에서는 직접 서버의 환경 변수를 설정할 수 있습니다. 이를 통해 각각의 환경에 맞는 설정 값을 유연하게 관리할 수 있습니다.

로컬 환경에서는 개발자가 직접 .env 파일을 수정하여 설정 값을 변경할 수 있습니다. 이때 깃 무시 설정(.gitignore)에 .env 파일을 포함시켜야 한다는 점을 주의해야 합니다. 서버 환경에서는 서버 관리자가 각 환경에 맞는 환경 변수 설정을 직접 해주어야 합니다.

6. 결론

python-dotenv를 사용하면 로컬 환경과 서버 환경의 설정 분리가 간편해집니다. .env 파일에 환경 변수를 정의하고, 애플리케이션에서 이를 사용하여 설정 값을 가져올 수 있습니다. 이를 통해 개발자와 서버 관리자 간에 협업이 원활해지고, 애플리케이션의 환경 설정을 효율적으로 관리할 수 있습니다.

참고 자료