環境変数¶
Tip
もし、「環境変数」とは何か、それをどう使うかを既に知っている場合は、このセクションをスキップして構いません。
環境変数(env varとも呼ばれる)はPythonコードの外側、つまりOSに存在する変数で、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")
Tip
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
Tip
詳しくは The Twelve-Factor App: Config を参照してください。
型とバリデーション¶
環境変数はテキスト文字列のみを扱うことができます。これは、環境変数がPython外部に存在し、他のプログラムやシステム全体(Linux、Windows、macOS間の互換性を含む)と連携する必要があるためです。
つまり、Pythonが環境変数から読み取るあらゆる値は str
型となり、他の型への変換やバリデーションはコード内で行う必要があります。
環境変数を使用してアプリケーション設定を管理する方法については、高度なユーザーガイド - Settings and Environment Variablesで詳しく学べます。
PATH
環境変数¶
PATH
という特別な環境変数があります。この環境変数は、OS(Linux、macOS、Windows)が実行するプログラムを発見するために使用されます。
PATH
変数は、複数のディレクトリのパスから成る長い文字列です。このパスはLinuxやMacOSの場合は:
で、Windowsの場合は;
で区切られています。
例えば、PATH
環境変数は次のような文字列かもしれません:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
これは、OSはプログラムを見つけるために以下のディレクトリを探す、ということを意味します:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32
これは、OSはプログラムを見つけるために以下のディレクトリを探す、ということを意味します:
C:\Program Files\Python312\Scripts
C:\Program Files\Python312
C:\Windows\System32
ターミナル上でコマンドを入力すると、 OSはそのプログラムを見つけるために、PATH
環境変数のリストに記載されたそれぞれのディレクトリを探します。
例えば、ターミナル上でpython
を入力すると、OSはpython
によって呼ばれるプログラムを見つけるために、そのリストの先頭のディレクトリを最初に探します。
OSは、もしそのプログラムをそこで発見すれば実行しますが、そうでなければリストの他のディレクトリを探していきます。
PythonのインストールとPATH環境変数の更新¶
Pythonのインストール時にPATH
環境変数を更新したいか聞かれるかもしれません。
Pythonをインストールして、そのプログラムが/opt/custompython/bin
というディレクトリに配置されたとします。
もし、PATH
環境変数を更新するように答えると、PATH
環境変数に/opt/custompython/bin
が追加されます。
PATH
環境変数は以下のように更新されるでしょう:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin
このようにして、ターミナルでpython
と入力したときに、OSは/opt/custompython/bin
(リストの末尾のディレクトリ)にあるPythonプログラムを見つけ、使用します。
Pythonをインストールして、そのプログラムがC:\opt\custompython\bin
というディレクトリに配置されたとします。
もし、PATH
環境変数を更新するように答えると、PATH
環境変数にC:\opt\custompython\bin
が追加されます。
PATH
環境変数は以下のように更新されるでしょう:
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin
このようにして、ターミナルでpython
と入力したときに、OSはC:\opt\custompython\bin\python
(リストの末尾のディレクトリ)にあるPythonプログラムを見つけ、使用します。
つまり、ターミナルで以下のコマンドを入力すると:
$ python
OSは/opt/custompython/bin
にあるpython
プログラムを見つけて実行します。
これは、次のコマンドを入力した場合とほとんど同等です:
$ /opt/custompython/bin/python
OSはC:\opt\custompython\bin\python
にあるpython
プログラムを見つけて実行します。
これは、次のコマンドを入力した場合とほとんど同等です:
$ C:\opt\custompython\bin\python
この情報は、Virtual Environments について学ぶ際にも役立ちます。
まとめ¶
これで、環境変数とは何か、Pythonでどのように使用するかについて、基本的な理解が得られたはずです。
環境変数についての詳細は、Wikipedia: Environment Variable を参照してください。
環境変数の用途や適用方法が最初は直感的ではないかもしれませんが、開発中のさまざまなシナリオで繰り返し登場します。そのため、基本を知っておくことが重要です。
たとえば、この情報は次のセクションで扱うVirtual Environmentsにも関連します。