環境
- macOS Ventura v13.5.2
- Python 3.10.5
venvとは
venvは、仮想環境の生成・Pythonのパッケージ管理を簡単に行うことができるライブラリ。ツールやWebアプリを最終的に本番にデプロイすることを考慮すると、OSに直接ではなくvenv仮想環境ごとに環境変数を設定したいと考えるはず。本記事ではvenの基礎とpython-dotenvを用いた設定手順を紹介する
ちなみに、環境変数というのは以下のようなAPI_KEYなどを指す。環境変数はgit管理外となるので、アプリケーションを運用する上では各環境で動作するマシンに差異なく管理する方法を構築する必要性がある
API_KEY="XXXXXXXXXXXXXXXX"
仮想環境の構築
任意のディレクトリで以下を実行し、仮想環境を構築する。このコマンドを実行すると、「.venv」というフォルダが作成される。インタプリタのショートオプション-m
にモジュールを指定することでそのモジュールをスクリプトとして実行することができる。.venvというのは生成されるディレクトリ名なので、任意のもので良い。
python -m venv .venv # python3でパスがとっているのであれば、python3 -m venv .venv
作成した仮想環境を有効化する。作成したvenvディレクトリのbinディレクトリにあるactivateというファイルを読み込むことで有効化できる
source .venv/bin/activate
仮想環境を有効化した状態ではpython
やpip
などのコマンド(実行ファイル)はvenv/bin以下のものが使用される。仮想環境内でのpythonのバージョンは仮想環境を作成するときに使用したpythonのバージョンに由来する(macで実行したのであれば、macにパスが通っているpythonのバージョン)
(venv) which python
// /Users/・・・/venv/bin/python
仮想環境内でのライブラリのインストール。試しにflaskをインストールする
(venv) pip install flask
インストールしたライブラリは、venv(これは作成した仮想環境名により決まる)/lib/python3.11(これは使用するpythonのバージョンにより異なる)/site-packages/ に格納される。
すでに他の開発者がrequirements.txtを用意してくれている等の場合は以下のようにするとrequirements.txtから依存関係を全て仮想環境にインストールできる
(venv) pip install -r requirements.txt
また、作成した仮想環境のディレクトリに含まれるディレクトリ/ファイルは全てgitの管理下から外しておくこと
.gitignore
.venv
環境変数の設定
python-dotenvを依存関係に追加
(venv) pip install python-dotenv
プロジェクトのルートディレクトリに .env ファイルを作成。
(venv) touch .env
.env ファイルを開き、以下の形式で環境変数を定義
API_KEY="your api key"
アプリケーションから環境変数を読み込む
from dotenv import load_dotenv
import os
load_dotenv()
your_api_key = os.getenv("API_KEY")
作業が終わったら以下コマンドで仮想環境を無効化
deactivate
おまけ
Visual Studio Codeを使用している場合、依存関係(インストールした外部ライブラリ)もコード補完が効いて欲しい。その場合は以下のようにsettings.jsonにsite-packagesのパスを追加してあげると、外部ライブラリのpythonファイルを解決できるようになる
.vscode/settings.json
{
"python.analysis.extraPaths": [
"/Users/・・・/.venv/lib/python3.10/site-packages"
]
}
まとめ
いかがでしたでしょうか。本記事では、venv仮想環境の構築と、python-dotenvを用いて仮想環境ごとに環境変数を設定する手順を紹介しました。本番環境へのデプロイ等の際に必要になってくる内容になりますので、是非参考にしてみてください。