9.4 KiB
環境変数
/// tip | 豆知識
もし、「環境変数」とは何か、それをどう使うかを既に知っている場合は、このセクションをスキップして構いません。
///
環境変数(「env var」とも呼ばれます)とは、Pythonコードの外側、つまりオペレーティングシステムに存在する変数で、Pythonコード(または他のプログラム)から読み取れます。
環境変数は、アプリケーションの設定の扱い、Pythonのインストールの一部などで役立ちます。
環境変数の作成と使用
環境変数は、Pythonを必要とせず、シェル(ターミナル)で作成して使用できます。
//// tab | Linux, macOS, Windows Bash
// 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
////
//// tab | Windows PowerShell
// 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プログラムを呼び出します。
//// tab | Linux, macOS, Windows Bash
// 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
////
//// tab | Windows PowerShell
// 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に)保存(コミット)する必要がないため、設定やsettingsに使うのが一般的です。
また、特定のプログラムの呼び出しのためだけに、そのプログラムでのみ、実行中の間だけ利用できる環境変数を作成することもできます。
そのためには、同じ行で、プログラム自体の直前に作成してください。
// 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{.internal-link target=_blank} で詳しく学べます。
PATH環境変数
PATHという特別な環境変数があります。これはオペレーティングシステム(Linux、macOS、Windows)が実行するプログラムを見つけるために使用されます。
変数PATHの値は長い文字列で、LinuxとmacOSではコロン:、Windowsではセミコロン;で区切られたディレクトリで構成されます。
例えば、PATH環境変数は次のような文字列かもしれません:
//// tab | Linux, macOS
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
これは、システムが次のディレクトリでプログラムを探すことを意味します:
/usr/local/bin/usr/bin/bin/usr/sbin/sbin
////
//// tab | Windows
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環境変数を更新するかどうかを尋ねられるかもしれません。
//// tab | Linux, macOS
Pythonをインストールして、その結果/opt/custompython/binというディレクトリに配置されたとします。
PATH環境変数を更新することに同意すると、インストーラーはPATH環境変数に/opt/custompython/binを追加します。
例えば次のようになります:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin
このようにして、ターミナルでpythonと入力すると、システムは/opt/custompython/bin(最後のディレクトリ)にあるPythonプログラムを見つけ、それを使用します。
////
//// tab | Windows
Pythonをインストールして、その結果C:\opt\custompython\binというディレクトリに配置されたとします。
PATH環境変数を更新することに同意すると、インストーラーはPATH環境変数にC:\opt\custompython\binを追加します。
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin
このようにして、ターミナルでpythonと入力すると、システムはC:\opt\custompython\bin(最後のディレクトリ)にあるPythonプログラムを見つけ、それを使用します。
////
つまり、ターミナルで次のように入力すると:
$ python
//// tab | Linux, macOS
システムは/opt/custompython/binにあるpythonプログラムを見つけて実行します。
これは、次のように入力するのとおおむね同等です:
$ /opt/custompython/bin/python
////
//// tab | Windows
システムはC:\opt\custompython\bin\pythonにあるpythonプログラムを見つけて実行します。
これは、次のように入力するのとおおむね同等です:
$ C:\opt\custompython\bin\python
////
この情報は、Virtual Environments{.internal-link target=_blank} について学ぶ際にも役立ちます。
まとめ
これで、環境変数とは何か、Pythonでどのように使用するかについて、基本的な理解が得られたはずです。
環境変数についての詳細は、Wikipedia for Environment Variable も参照してください。
多くの場合、環境変数がどのように役立ち、すぐに適用できるのかはあまり明確ではありません。しかし、開発中のさまざまなシナリオで何度も登場するため、知っておくとよいでしょう。
例えば、次のセクションのVirtual Environmentsでこの情報が必要になります。