Masayan tech blog.

  1. ブログ記事一覧>
  2. Pythonのvenv仮想環境で環境変数を設定する方法

Pythonのvenv仮想環境で環境変数を設定する方法

公開日

環境

  • 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

仮想環境を有効化した状態ではpythonpipなどのコマンド(実行ファイル)は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を用いて仮想環境ごとに環境変数を設定する手順を紹介しました。本番環境へのデプロイ等の際に必要になってくる内容になりますので、是非参考にしてみてください。