環境変数¶
ヒント
既に「環境変数」とその使用方法を知っている場合は、このセクションをスキップしてください。
環境変数(「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
環境変数¶
**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/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記事で、さらに詳しい情報を読むこともできます。
多くの場合、環境変数がどのように役立ち、すぐに適用できるのかは、それほど明らかではありません。しかし、開発中に様々なシナリオで何度も登場するので、知っておくと良いでしょう。
例えば、次のセクションの仮想環境に関する情報が必要になります。