スポンサーリンク

【Python】.envファイルを使用した環境変数の管理

記事内に広告が含まれています。

Pythonの.envファイルを使用することで、環境変数を簡単に管理し、セキュリティの向上やコードの柔軟性を保つことができます。

特に、APIキーやデータベースの接続情報など、コードに直接埋め込むのはリスクが高いため、これらを.envファイルに分離して管理することが推奨されています。

スポンサーリンク

.envファイルとは?

.envファイルは、環境変数を定義するためのテキストファイルです。

このファイルには、キーと値のペアが記述されており、アプリケーションが必要な機密情報や設定を外部から読み込むことができます。

例えば、次のように記述します。

API_KEY=your_api_key
DB_USER=username
DB_PASSWORD=password123

キーと値を=で区切って定義します。

.envファイルは一般的にプロジェクトルートに置かれますが、ファイルパスを指定することで、他の場所にも置くことができます。

スポンサーリンク

Pythonでの.envファイルの読み込み方法

Pythonでは、.envファイルを読み込むためにpython-dotenvというライブラリを使うのが一般的です。

このライブラリを使用することで、簡単に環境変数をロードして利用することができます。

ライブラリのインストール

まず、python-dotenvライブラリをインストールします。以下のコマンドを実行してください:

pip install python-dotenv

.envファイルの読み込み

.envファイルを使用するには、Pythonコード内でload_dotenv()関数を呼び出します。

例えば、以下のようなコードです。

import os
from dotenv import load_dotenv

# .envファイルの読み込み
load_dotenv()

# 環境変数の取得
api_key = os.getenv('API_KEY')
db_user = os.getenv('DB_USER')
db_password = os.getenv('DB_PASSWORD')

print(f"API Key: {api_key}")
print(f"Database User: {db_user}")
print(f"Database Password: {db_password}")

デフォルトでは、load_dotenv()は、すでにシステムに設定されている環境変数を変更しませんが、load_dotenv(override=True) のように override=True を指定すると、.envファイルの内容が優先されます。

.envファイルの内容を使用する

上記のコードでは、.envファイルに記述された環境変数がos.getenv()を使用して取得されています。

この方法により、APIキーやデータベースの接続情報などの機密データをコード内に直接書かずに済みます。

.envファイルの管理

.envファイルはプロジェクトのルートディレクトリに配置するのが一般的ですが、セキュリティのために.gitignoreファイルに追加して、Gitなどのバージョン管理システムで管理しないようにする必要があります。

.gitignoreには以下のように追加します。

# 環境変数ファイルを無視.env

必要な環境変数を示すために、.env.sampleファイルを用意する場合があります。

例えば、次のように記述することで、アプリケーションを動かすために必要な環境変数を示せます。

API_KEY=
DB_USER=
DB_PASSWORD=

複数の環境に対応する

プロジェクトが異なる環境(例えば、開発環境と本番環境)で実行される場合、環境ごとに異なる.envファイルを用意することができます。

例えば、以下のようにファイルを分けます。

  • .env.development(開発用)
  • .env.production(本番用)

Pythonコード内で読み込むファイルを指定することも可能です。

load_dotenv('.env.production')

これにより、環境ごとに異なる設定を簡単に切り替えることができます。

まとめ

Pythonで環境変数を管理するために、.envファイルとpython-dotenvをりようできます。

.envファイルを使うことで、以下の利点が得られます。

  • セキュリティの向上
    APIキーやパスワードなどの機密情報をコードから分離し、リポジトリに含めないようにできます。
  • 柔軟な設定管理
    異なる環境(開発、本番)ごとに設定を簡単に切り替え可能です。
  • コードの可読性向上
    設定や機密情報がコードに直接埋め込まれないため、コードがシンプルで保守しやすくなります。
スポンサーリンク
Python
著者SNS
タイトルとURLをコピーしました