コンテンツにスキップ

環境変数

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にも関連します。