コンテンツへスキップ

環境変数

ヒント

既に「環境変数」とその使用方法を知っている場合は、このセクションをスキップしてください。

環境変数(「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環境変数

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

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/binpythonプログラムを探して実行します。

これは、以下を入力することとほぼ同等です。

$ /opt/custompython/bin/python

システムはC:\opt\custompython\bin\pythonpythonプログラムを探して実行します。

これは、以下を入力することとほぼ同等です。

$ C:\opt\custompython\bin\python

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

結論

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

環境変数のWikipedia記事で、さらに詳しい情報を読むこともできます。

多くの場合、環境変数がどのように役立ち、すぐに適用できるのかは、それほど明らかではありません。しかし、開発中に様々なシナリオで何度も登場するので、知っておくと良いでしょう。

例えば、次のセクションの仮想環境に関する情報が必要になります。