.envファイルは、アプリケーションの設定情報や環境変数を簡単に管理・確認するためのテキストファイルです。このファイルには、キーと値のペアを一行ごとに定義し、アプリケーションが実行時に参照する環境変数を設定します。本記事では、.envファイルの作成方法などの使い方及びそのメリットを解説しつつ、dotenvライブラリを使用して、Pythonの開発環境で.envを読み込む方法を説明します。
- .envファイルの使い方や作成方法がわからない
- .envファイルをPythonの開発で読み込む方法を知りたい
envファイルとは何か?その使い方のイメージ
まずはじめに、.envファイルの概要やその使用用途をご紹介します。こちらのセクションで紹介する内容はPythonに限らず、あらゆる言語で開発環境をセットアップするための必須知識となります。.envファイル全般に関する理解を深める目的で記載しています。
envファイルとは
.envファイルは、通常プロジェクトのルートディレクトリに配置され、.env
として、変数ごとにキーと値をペアにして記述します。Pythonプロジェクトでは通常下記のようなフォルダ構成が考えられます。
my_project/
│
├── .env # 環境変数を格納するファイル
├── requirements.txt # プロジェクトの依存関係を記述したファイル
├── app.py # メインのアプリケーションファイル
├── static/ # 画像ファイルなどの静的ファイルを格納するディレクトリ
│ └── media/
│ ├── image_01.png
│ └── image_02.png
└── venv/ # 仮想環境を格納するディレクトリ(仮想環境を使用する場合)
.envファイルは、APIキーやその他の機密情報、環境によって変わる情報などを、キー=値
の形式で記述します。例えば、下記のようなファイルが想定されます。
OPENAI_API_KEY=dfnvjdfvhfdmkiuvnfdsvhdfs
SECRET_KEY=dfvmrefadfsndnjfdhvnferk9
DATABASE_URL=postgres://user:password@localhost:5432/mydatabase
SITE_DOMAIN=sample.com
envファイルを使うべき理由
ここまで、.envファイルがどのようなものか紹介しましたが、なぜ.envファイルをプロジェクトで使用する必要があるのでしょうか。主に、3つの理由をここでは紹介します。
セキュリティ:
- 機密情報をコードから分離し、コードベースが漏洩しても機密情報が漏れないようにします。
設定の一元管理:
- すべての設定情報を一つのファイルで管理することで、設定の変更や確認が容易になります。
柔軟性:
- 異なる環境ごとに異なる設定を簡単に切り替えられます。例えば、開発環境ではデバッグモードを有効にし、本番環境では無効にすることができます。
こうした理由から、ごく簡単な1回きりのコーディング以外では、.envファイルを使用してプロジェクトに必要な情報を管理することが望ましいです。
以降のセクションでは、こうした.envファイルを実際のPythonの開発環境で使用するためのコーディング例をご紹介します。
Pythonでの開発における.envファイルの作成や読み込みの解説
次に、Pythonにおける開発環境で、.envファイルを作成し、読み込む方法など、実際のコーディング例をご紹介します。ここでは、OpenAIのAPIキーを使用して、chatGPTと会話するためのコード例をご紹介します。
envファイルの作成
まずはじめに、.envファイルを作成します。.envファイルではキー=値
の形式で記述していきます。ここではOpenAIのAPIキーが必要になるため、APIキーを.envファイルに記述します。実際にこちらのコードを使用する場合にはご自分のAPIキーに置き換えて使用する必要があることに注意してください。
OPENAI_API_KEY=dfnvjdfvhfdmkiuvnfdsvhdfs
envファイルの読み込みを含むコードサンプル
こちらのコードをルートディレクトリに配置したら、次に実際のコードを記載していきます。今回のPythonの開発環境におけるディレクトリ構成は下記のとおりです。
my_project/
│
├── .env # 環境変数を格納するファイル
├── app.py # メインのアプリケーションファイル
└── venv/ # 仮想環境を格納するディレクトリ(仮想環境を使用する場合)
ここでは、.envファイルに加えて、仮想環境をvenvに作成しています。仮想環境に関する説明は今回はスキップしますが、興味がある方は下記の記事で詳しく解説していますので確認してみてください。
.envファイルをPythonの開発環境に設定すると、次のステップで.envファイルの読み込みが行えます。
load_dotenv()
で.envファイルを読み込むos.getenv({.envファイルのキー})
で環境変数を取得する
こちらの方法に基づき実装されたコード例を下記に記載しています。ここでは、.envファイルのOPENAI_API_KEY
キーをもとに、実際のAPIキーを取得しています。これにより、gitでAPIキーが流出してしまうことを防いだり、他の人が.envファイル内のAPIキーを変更するだけで全く同じコードが実行できるようにしています。
なお、ライブラリをインストールしていない方は、pip install openai python-dotenv
をターミナルで実行してください。
import os
from openai import OpenAI
from dotenv import load_dotenv
# .envファイルの読み込み
# ファイルを選択・指定する必要などはなく、自動で行われる
load_dotenv()
def ask_ChatGPT(prompt: str):
# 環境変数からAPIキーを取得
# ここで、api_key = "dfnvjdfvhfdmkiuvnfdsvhdfs" とすると
# APIキーの流出やコードの改変が必要になるため好ましくない
api_key = os.getenv("OPENAI_API_KEY")
if not api_key:
raise ValueError("APIキーが.envファイル内に設定されていません")
client = OpenAI(api_key=api_key)
# ChatGPTにプロンプトを送信
chat_completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "user",
"content": prompt,
}
],
)
# レスポンスを取得して返す
return chat_completion['choices'][0]['message']['content']
response = ask_ChatGPT("Say this is a test")
print(f"ChatGPTの返答: {response}")
実際のプロジェクトでは、様々な環境依存の情報が必要となるため、.envファイルを使って堅牢かつ柔軟に環境をセットアップできるようにすると、後々の助けとなります。
あらためて、.envファイルをPythonの開発環境で使用する際のメリットと使用方法を整理しましょう。
.envファイルを使うメリット
- セキュリティ:機密情報をコードと分けて管理し、意図しない流出を防ぐ
- 設定の一元管理:設定情報を1ファイルで管理し、変更や確認を簡単にする
- 柔軟性:環境ごとに設定を切り替え可能とする
.envファイルの作成と読み込み
- 作成方法: ルートディレクトリに
キー=値
の組み合わせで記述する - 読み込み方法:
load_dotenv()
で読み込み、os.getenv({キー})
で取得する
おわりに
以上が、Pythonの開発環境で、.envファイルを使用・作成して環境変数を読み込んだり確認したりする方法の解説となります。
ご質問やご不明点がある場合はお気軽にコメントお待ちしております。
ご精読いただきありがとうございました。
コメント