コンテンツへスキップ

環境変数

ヒント

「環境変数」とは何か、またその使い方をすでに知っている方は、このセクションをスキップしても構いません。

環境変数(「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")

ヒント

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

ヒント

詳細については、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/binPATH 環境変数に追加します。

次のようになるかもしれません。

/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\binPATH 環境変数に追加します。

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の環境変数でも詳しく読むことができます。

多くの場合、環境変数がどのように役立ち、すぐに適用できるかはあまり明白ではありません。しかし、開発中にさまざまなシナリオで繰り返し登場するため、それらについて知っておくことは良いことです。

例えば、この情報は次のセクションの仮想環境で必要になります。