(最終更新日:2023年6月)
✔このような方へ向けて書かれた記事となります
「Pythonの環境変数をどのように設定するのだろうか?」
「Pythonの環境変数設定の手順が知りたい」
「Pythonの環境変数設定の実例が見たい」
✔当記事を通じてお伝えすること
- Pythonの環境変数の基本
- Pythonの環境変数設定方法やその応用
- Pythonの環境変数設定の実例
当記事では、Pythonの環境変数の基本に加え、その設定方法を活用した使い方まで、具体例を用いて詳しく解説しています。
ぜひ最後までご覧ください。
Python環境変数の概要
こちらンでは、Pythonと環境変数について深掘りしていきます。
環境変数とは何か、そしてPythonで環境変数をどのように扱うのかについて理解することで、より効率的なプログラミングが可能になるでしょう。
- 環境変数とは?
- Python環境変数の役割
環境変数とは?
環境変数は、OSの動作に影響を与える一連の値のことを指します。
これらの値は、システムに関するさまざまな情報を保持しています。
- OSの種類
- アプリケーションの設定
- ネットワーク接続の詳細
これらの変数は、OS内のすべてのプロセスからアクセス可能で、プログラムの実行環境を制御します。
Python環境変数の役割
Pythonでも、これらの環境変数を用いてシステムの設定やプログラムの動作を制御できます。
- PYTHONPATHという環境変数で、Pythonインタープリタがモジュールを検索するパスを制御
- 環境変数を通じて、プログラムの実行に必要な設定値(データベースの接続情報など)を外部から注入
ソースコード中に固定値を書くことなく、動的に設定を変更できるのです。
環境変数の取得
Pythonで環境変数を取得する方法を見ていきましょう。
Pythonではosモジュールを使用して環境変数にアクセスします。
とくにos.environとgetenv関数が一般的です。
- os.environの利用
- getenv関数の利用
- python-dotenvの利用
os.environの利用
os.environは、現在の環境変数を保持する辞書型のオブジェクトです。
これを用いると、任意の環境変数を取得できます。
以下に具体的な例を示します。
import os
print(os.environ["PYTHONPATH"])
このコードでは、”PYTHONPATH”という名前の環境変数を取得しています。
もし指定した環境変数が存在しない場合、KeyErrorが発生するので気をつけましょう。
osモジュールについてはこちらをどうぞ。
getenv関数の利用
osモジュールにはgetenvという関数もあり、これを使っても環境変数を取得できます。
getenv関数のメリットは、環境変数が存在しない場合でもエラーを返さずにNoneを返す点です。
例えば以下のように使用します。
import os
print(os.getenv("PYTHONPATH"))
このコードでは、”PYTHONPATH”という名前の環境変数を取得しています。
存在しない場合はNoneを返します。
python-dotenvの利用
python-dotenvは、サードパーティライブラリで、任意のファイルに独自の環境変数を設定できるもの。
.envというファイルの中に変数と値を入れると、プロジェクトごとの環境変数が設定可能です。
実際に使っているプログラムもご紹介してますので、詳しい使い方はこちらをご覧ください。
環境変数の設定(追加・上書き)
次に、Pythonで環境変数を設定(追加・上書き)する方法を見ていきましょう。
ここでもos.environとputenv関数が利用できます。
- os.environの利用
- putenv関数の利用
os.environの利用
os.environを使うと、環境変数を追加または上書き可能です。
辞書のように操作するだけで、環境変数を設定できます。
具体的な例を以下に示します。
import os
os.environ["NEW_VARIABLE"] = "New Value"
“NEW_VARIABLE”という新しい環境変数を作成し、その値を”New Value”に設定。
すでに”NEW_VARIABLE”が存在していた場合、その値は”New Value”に上書きされます。
putenv関数の利用
また、osモジュールのputenv関数を使用しても環境変数を設定できます。
putenv関数の引数として、環境変数名と設定したい値を指定しましょう。
こちらがその例です。
import os
os.putenv("NEW_VARIABLE", "New Value")
“NEW_VARIABLE”という新しい環境変数を作成し、その値を”New Value”に設定。
既に”NEW_VARIABLE”が存在していた場合、その値は”New Value”に上書きされます。
ただしputenv関数を用いても、os.environ内の値は即座には変更されません。
os.environを参照する場合は注意が必要です。
環境変数の削除
環境変数の削除方法についても説明していきましょう。
削除にもos.environとunsetenv関数が利用できます。
- os.environの利用
- unsetenv関数の利用
os.environの利用
os.environを用いて環境変数を削除する方法は、Pythonの辞書からキーを削除するのと同じです。
以下に例を示します。
import os
del os.environ["NEW_VARIABLE"]
“NEW_VARIABLE”という環境変数を削除します。
この環境変数が存在しない場合、KeyErrorが発生します。
unsetenv関数の利用
osモジュールのunsetenv関数も、環境変数の削除に利用できます。
unsetenv関数の引数には、削除したい環境変数名を指定しましょう。
以下のコードは、”NEW_VARIABLE”という環境変数を削除する例です。
import os
os.unsetenv("NEW_VARIABLE")
この方法でも”NEW_VARIABLE”という環境変数を削除できます。
unsetenvの動作はプラットフォームによって異なるため、os.environを使用した方が移植性が高いと言えます。
環境変数変更の影響
次に、Pythonで環境変数を変更した場合の影響について考えてみましょう。
- 環境変数の持続性
- 処理の切り替え方法
環境変数の持続性
Pythonから環境変数を変更したとき、その変更はPythonプロセスが終了すると元に戻ります。
つまり、os.environやos.putenvで環境変数を変更しても、その変更はPythonスクリプトが動作している間だけ有効だということ。
Pythonが子プロセスを作成するときには現在の環境変数がコピーされ、その子プロセスが独自の環境変数を持つためです。
これにより、ひとつのプロセスが環境変数を変更しても、他のプロセスには影響を与えません。
処理の切り替え方法
Pythonのプログラムで、環境変数の値によって処理を切り替えることも可能です。
例えば、開発環境と本番環境で処理を切り替える際に、環境変数を利用することがあります。
以下のコードは、環境変数”ENV”の値によって、デバッグ出力を切り替える例です。
import os
if os.getenv("ENV") == "development":
print("Debug mode is on")
else:
print("Debug mode is off")
このコードでは、環境変数”ENV”が”development”であれば、「Debug mode is on」を、そうでなければ「Debug mode is off」を出力します。
これにより、環境変数の値によって処理を分岐することが可能となります。
Pythonと環境変数の連携
ここではPythonと環境変数の連携について説明します。
- Windowsでの環境変数設定方法
- macOSとLinuxでの環境変数設定方法
Windowsでの環境変数設定方法
Windowsでは、「システムのプロパティ」から環境変数を設定します。
システムのプロパティ→詳細設定→環境変数
新規に環境変数を作成したり、既存の環境変数を編集したりが可能です。
Windowsの環境変数を永続的に変更したいとき、Pythonから直接操作するのは辞めましょう。
なぜならシステム全体に影響を及ぼしてしまう可能性があるからです。
Pythonのプログラムから環境変数を変更する際には、その変更がプロセス内でのみ有効になるように注意してください。
macOSとLinuxでの環境変数設定方法
macOSとLinuxでは、シェルの設定ファイル(.bashrc
, .bash_profile
, .zshrc
など)を編集することで環境変数を設定できます。
たとえば、~/.bashrc
に以下のように記述することで、新たな環境変数を設定できます。
export NEW_VARIABLE=value
この設定は、新たにシェルを起動するたびに有効になります。
また以下のコマンドで、現在のシェルセッションに対しても変更を反映させることも可能。
source ~/.bashrc
ただしWindowsと同様、Pythonコードで永続的な変数の変更は避けることがおすすめです。
まとめ
当記事の内容をまとめます。
- Pythonではosモジュールを用いて環境変数を取得、設定、削除できる
- Pythonからの環境変数の変更は、プロセス内でのみ有効で、プロセスが終了すると元に戻る
- 環境変数は、プログラムの設定情報を管理したり、開発環境と本番環境での処理を切り替えるなど、多くの場面で利用できる
Pythonプログラムを書く際には、環境変数の存在を意識して、適切に利用するようにしましょう。