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