環境変数¶
ヒント
もし「環境変数」とは何か、そしてそれらをどう使うかをご存知であれば、このセクションはスキップしてください。
環境変数 (別名「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")
その後、その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\ScriptsC:\Program Files\Python312C:\Windows\System32
ターミナルで**コマンド**を入力すると、オペレーティングシステムはPATH環境変数にリストされている**各ディレクトリ**でプログラムを**探します**。
例えば、ターミナルでpythonと入力すると、オペレーティングシステムはそのリストの**最初のディレクトリ**でpythonというプログラムを探します。
それが見つかれば、それを**使用します**。そうでなければ、**他のディレクトリ**を探し続けます。
PythonのインストールとPATHの更新¶
Pythonをインストールする際、PATH環境変数を更新するかどうか尋ねられる場合があります。
Pythonをインストールして、それが/opt/custompython/binというディレクトリに置かれたとします。
PATH環境変数を更新することに同意すると、インストーラは/opt/custompython/binをPATH環境変数に追加します。
それは次のようになります。
/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\binをPATH環境変数に追加します。
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の環境変数も参照してください。
多くの場合、環境変数がすぐにどのように役立ち、適用できるかはあまり明らかではありません。しかし、開発中にさまざまなシナリオで繰り返し登場するため、知っておくことは良いことです。
例えば、次のセクションである仮想環境について学ぶには、この情報が必要です。