Python 프로그램을 개발하거나 운영하는 동안, 종종 개발 환경과 운영 환경에서 사용하는 변수를 분리해야 하는 경우가 있다. 이런 경우 환경 변수를 사용하는 것이 일반적이다. 이 글에서는 Python에서 환경 변수를 효율적으로 관리하는 방법에 대해 알아보겠다.
환경변수는 운영체제에서 프로세스에 대한 정보를 제공하는 키-값 쌍이다. 이 정보는 주로 시스템 설정이나 애플리케이션 설정에 사용되며, ID, 비밀번호, 호스트 URL 등과 같은 민감한 정보를 저장하는데 적합하다.
Python에서는 python-dotenv 패키지를 사용하여 .env 파일을 읽어 환경 변수를 설정할 수 있다. .env 파일은 키-값 쌍을 포함하며, 각 쌍은 한 줄에 하나씩 있다. 예를 들어:
DB_HOST=localhost
DB_USER=myuser
DB_PASSWORD=mypassword
이렇게 설정한 후 Python 코드에서는 다음과 같이 python-dotenv를 사용하여 이 값을 읽어 올 수 있다:
from dotenv import load_dotenv
import os
load_dotenv()
db_host = os.getenv('DB_HOST')
db_user = os.getenv('DB_USER')
db_password = os.getenv('DB_PASSWORD')
이 방법의 장점은 .env 파일을 프로젝트의 루트 디렉토리에 두고 필요한 곳에서 로드하면 되므로, 환경 변수를 쉽게 관리할 수 있다는 것이다.
환경변수를 활용하면 개발 환경과 운영 환경을 쉽게 분리할 수 있다. 각 환경에 대해 별도의 .env 파일을 만들고, 실행 환경에 따라 적절한 .env 파일을 로드하면 된다.
예를 들어, 개발 환경에는 .env.dev, 운영 환경에는 .env.prod 파일을 만들고, 환경에 따라 다음과 같이 적절한 파일을 로드하면 된다:
from dotenv import load_dotenv
import os
env = os.getenv('ENV', 'dev')
load_dotenv(f'.env.{env}')
db_host = os.getenv('DB_HOST')
db_user = os.getenv('DB_USER')
db_password = os.getenv('DB_PASSWORD')
그런 다음 실행시에는 ENV 환경 변수를 설정하여 적적절한 파일을 선택하기 위해 실행시에 ENV 환경 변수를 설정할 수 있다:
# 개발 환경에서 실행
ENV=dev python your_script.py
# 운영 환경에서 실행
ENV=prod python your_script.py
이렇게 하면 각 환경에 필요한 설정값을 별도의 파일에 관리하고, 실행 환경에 따라 적절한 설정을 불러올 수 있다. 이는 코드의 재사용성을 높이고, 민감한 정보의 노출을 방지하는 데 도움이 된다.
환경변수를 사용하면, 서버의 환경설정을 보다 안전하고 효과적으로 관리할 수 있다. python-dotenv를 활용하여 간편하게 환경변수를 설정하고, 개발과 운영 환경을 분리해 보자.