コンテンツへスキップ

環境変数

ヒント

もし「環境変数」とは何か、そしてそれらをどう使うかをご存知であれば、このセクションはスキップしてください。

環境変数 (別名「env var」) は、Pythonコードの**外**、**オペレーティングシステム**に存在する変数で、Pythonコード (または他のプログラムも) によって読み取ることができます。

環境変数は、アプリケーションの**設定**を処理したり、Pythonの**インストール**の一部としてなど、さまざまな場面で役立ちます。

環境変数の作成と利用

Pythonを使わずに、**シェル (ターミナル)** で環境変数を**作成**して使うことができます。

// You could create an env var MY_NAME with
$ export MY_NAME="Wade Wilson"

// Then you could use it with other programs, like
$ echo "Hello $MY_NAME"

Hello Wade Wilson
// Create an env var MY_NAME
$ $Env:MY_NAME = "Wade Wilson"

// Use it with other programs, like
$ echo "Hello $Env:MY_NAME"

Hello Wade Wilson

Pythonで環境変数を読み取る

Pythonの**外**で、ターミナル (または他の方法で) 環境変数を作成し、それを**Pythonで読み取る**こともできます。

例えば、次のようなmain.pyファイルがあるとします。

import os

name = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")

ヒント

os.getenv() の2番目の引数は、返すデフォルト値です。

指定しない場合、デフォルトはNoneですが、ここでは使用するデフォルト値として"World"を提供しています。

その後、そのPythonプログラムを呼び出すことができます

// Here we don't set the env var yet
$ python main.py

// As we didn't set the env var, we get the default value

Hello World from Python

// But if we create an environment variable first
$ export MY_NAME="Wade Wilson"

// And then call the program again
$ python main.py

// Now it can read the environment variable

Hello Wade Wilson from Python
// Here we don't set the env var yet
$ python main.py

// As we didn't set the env var, we get the default value

Hello World from Python

// But if we create an environment variable first
$ $Env:MY_NAME = "Wade Wilson"

// And then call the program again
$ python main.py

// Now it can read the environment variable

Hello Wade Wilson from Python

環境変数はコードの外部で設定できますが、コードから読み取ることができ、他のファイルと一緒に保存(gitにコミット)する必要がないため、設定や**環境設定**に利用されるのが一般的です。

特定のプログラムの**呼び出しのみ**に利用できる環境変数も作成できます。つまり、そのプログラムに対してのみ、かつその実行期間中のみ利用可能です。

そのためには、プログラム自体と同じ行で、その直前に作成します。

// Create an env var MY_NAME in line for this program call
$ MY_NAME="Wade Wilson" python main.py

// Now it can read the environment variable

Hello Wade Wilson from Python

// The env var no longer exists afterwards
$ python main.py

Hello World from Python

ヒント

詳細については、The Twelve-Factor App: Config を参照してください。

型とバリデーション

これらの環境変数は、Pythonの外部にあり、他のプログラムやシステム全体(Linux、Windows、macOSなどの異なるオペレーティングシステムとも)と互換性がある必要があるため、**テキスト文字列**しか扱えません。

つまり、Pythonで環境変数から読み取られる**どんな値もstr**になり、異なる型への変換やバリデーションはコード内で実行する必要があります。

**アプリケーション設定**の処理に環境変数を使用する方法については、上級ユーザーガイド - 設定と環境変数で詳しく学習します。

PATH 環境変数

オペレーティングシステム (Linux、macOS、Windows) が実行するプログラムを見つけるために使用する、**PATH** と呼ばれる**特別な**環境変数があります。

PATH変数の値は長い文字列で、LinuxとmacOSではコロン:、Windowsではセミコロン;で区切られたディレクトリで構成されています。

例えば、PATH環境変数は次のようになります。

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

これは、システムがプログラムを次のディレクトリで探すべきであることを意味します。

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32

これは、システムがプログラムを次のディレクトリで探すべきであることを意味します。

  • C:\Program Files\Python312\Scripts
  • C:\Program Files\Python312
  • C:\Windows\System32

ターミナルで**コマンド**を入力すると、オペレーティングシステムはPATH環境変数にリストされている**各ディレクトリ**でプログラムを**探します**。

例えば、ターミナルでpythonと入力すると、オペレーティングシステムはそのリストの**最初のディレクトリ**でpythonというプログラムを探します。

それが見つかれば、それを**使用します**。そうでなければ、**他のディレクトリ**を探し続けます。

PythonのインストールとPATHの更新

Pythonをインストールする際、PATH環境変数を更新するかどうか尋ねられる場合があります。

Pythonをインストールして、それが/opt/custompython/binというディレクトリに置かれたとします。

PATH環境変数を更新することに同意すると、インストーラは/opt/custompython/binPATH環境変数に追加します。

それは次のようになります。

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin

こうすることで、ターミナルでpythonと入力すると、システムは/opt/custompython/bin(最後のディレクトリ)にあるPythonプログラムを見つけ、それを使用します。

Pythonをインストールして、それがC:\opt\custompython\binというディレクトリに置かれたとします。

PATH環境変数を更新することに同意すると、インストーラはC:\opt\custompython\binPATH環境変数に追加します。

C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin

これにより、ターミナルでpythonと入力すると、システムはC:\opt\custompython\bin(最後のディレクトリ)にあるPythonプログラムを見つけ、それを使用します。

だから、もしあなたがタイプすると

$ python

システムは/opt/custompython/binにあるpythonプログラムを**見つけ**、それを実行します。

これは、ほぼ次のように入力するのと同等です。

$ /opt/custompython/bin/python

システムはC:\opt\custompython\bin\pythonにあるpythonプログラムを**見つけ**、それを実行します。

これは、ほぼ次のように入力するのと同等です。

$ C:\opt\custompython\bin\python

この情報は、仮想環境について学ぶ際に役立ちます。

結論

これで、**環境変数**が何であるか、Pythonでそれらをどのように使うかについての基本的な理解が得られたはずです。

詳細については、Wikipediaの環境変数も参照してください。

多くの場合、環境変数がすぐにどのように役立ち、適用できるかはあまり明らかではありません。しかし、開発中にさまざまなシナリオで繰り返し登場するため、知っておくことは良いことです。

例えば、次のセクションである仮想環境について学ぶには、この情報が必要です。