https://d226lax1qjow5r.cloudfront.net/blog/blogposts/python-environment-variables-env-vars-a-primer/python_environmental-variables_1200x600.png

Python 環境変数 (Env Vars):入門

最終更新日 November 7, 2023

所要時間:11 分

この記事は2026年4月15日に更新されました。

Python開発者は、APIキーやAPIシークレット、データベース名など、誰にも見られたくないデータを扱うことが多い。

プログラマがこれらの秘密を保存する方法の1つは 環境変数.この記事では、Pythonで環境変数を使用するために必要なすべてを学びます。Pythonの環境変数の設定方法、取得方法、そしてあなたの秘密のすべてを安全に保つためのさまざまな方法を紹介します。最後に、Vonage でどのように環境変数を使用しているか、実際の例で説明します。

読むより見る方が好きですか?このチュートリアルのビデオ版をご覧ください:

環境変数とは?

環境変数(しばしば "env vars "と呼ばれる)とは、プログラムの外部に保存する変数のことで、プログラムの実行に影響を与えることができる。例えば、APIのキーとシークレットを含む環境変数を設定することができる。あなたのプログラムは、APIに接続する際にこれらの変数を使用するかもしれない。

ソースコードではなく環境に秘密を保存することには、いくつかの利点がある:

  • セキュリティ:環境変数は、APIキーやパスワードのような機密データを保護するのに役立つ。例えば、あなたのソースコードをダウンロードした人に、あなたが使っているAPIキーにアクセスされたくないかもしれません。

  • 構成管理:環境変数を使えば、コンフィギュレーション設定を簡単に保存・管理できる。

  • 携帯性:コードを変更することなく、アプリケーションを異なる環境に適応させることができる。例えば、コードが異なるオペレーティング・システムで異なる動作をする場合、環境変数を使ってこれを管理することができます。

  • テストとデバッグ:開発者は、コードを変更する代わりに環境変数を調整することで、テストとデバッグを簡素化できる。

要するに、環境変数によって、プログラムそのものを変更することなく、プログラムの動作を変更することができる。

オペレーティング・システムに環境変数を格納することもできるが、これから取り上げる他の方法の方が、実際のシナリオでは一般的だ。 PythonでRCSイメージメッセージを送信する場合.

前提条件

以下のコードに従うには、以下のものが必要である:

Pythonの環境変数の使い方

Python で環境変数を取得したり設定したりするには、組み込みの 組み込みの osモジュール.

Python環境変数の取得方法

モジュールにアクセスするには osモジュールにアクセスするために、コマンドラインからPythonファイルを作ってみよう:

touch env-testing.py

以下のコードをPythonファイルに保存し、このPythonプログラムを実行することで、プログラム内のすべての環境変数を表示することができます:

次に env-testing.pyファイルをテキストエディタで開き、以下のコードを追加する:

import os

os.environ

print(f"All of this operating system's environment variables: === > {os.environ}")

そして、コマンドラインからこのコードを実行する:

python3 env-testing.py

Pythonインタプリタは、オペレーティングシステムの環境変数をすべて出力するはずです。

Pythonの辞書のように os.environにアクセスできます。以下のコードはPythonで環境変数を取得する2つの方法を示しています:

import os

os.environ['USER']
os.environ.get('USER')

どちらも os.environ['USER']os.environ.get('USER')USER環境変数をオペレーティングシステムから取得します。しかし、最初の方法を使った場合、Pythonは変数が見つからないと例外を投げます。

ファイルに存在しない変数を追加し、コードを実行することでこれを試すことができる。 env-testing.pyファイルに存在しない変数を追加し、コードを実行してみてください。以下のコードを使って、まず書いてある通りに実行してみてください:

test_variable = os.environ['NO_VARIABLE']
# test_variable = os.environ.get('NO_VARIABLE', None)

print(f"Attempting to print nonexistent variable: ===> {test_variable}")

を取得する必要があります。 KeyError: 'NO_VARIABLE'.

コメントアウト test_variable = os.environ['NO_VARIABLE']そしてコメントを解除する test_variable = os.environ.get('NO_VARIABLE', None).もう一度コードを実行すると Noneと表示されるはずだ。

グッドプラクティスは os.environ['MY_ENVIRONMENT_VARIABLE']を使うことです。 os.environ.get('MY_ENVIRONMENT_VARIABLE')を使うことです。

を使うこともできる。 os.getenv()の代わりとして os.environ.get().どちらも同じように動作し Noneを返しますが os.getenv()の方がより簡潔です。例えば

import os
api_key = os.getenv("MY_API_KEY")

を選ぶか os.getenv()それとも os.environ.get()どちらを選ぶかは、好みと読みやすさによる。

環境変数の設定方法

Pythonで環境変数を設定するには、辞書と同じように、環境変数を os.environオブジェクトに追加します。ただし、文字列のみが許可されます。これらはインタープリタが実行されているシェルに直接渡されるからです。

os.environ['USER'] = 'New User'

環境変数を更新するには、まったく同じ方法で上書きすればよい:

os.environ['USER'] = 'Modified User'

Python環境変数を保存する5つの方法

環境変数を保存したい理由はさまざまなので、保存方法もさまざまです。

ローカル・マシンに何かを設定するだけでよい場合もあれば、アプリケーションを本番稼動させる必要がある場合もある!

以下では、Pythonの環境変数を保存する5つの方法を紹介します:

  1. オペレーティング・システム・ストレージ

  2. ファイルストレージ

  3. クラウドストレージ

  4. ユニバーサル・シークレット・マネージャー・ストレージ

  5. CI/CDシステム・ストレージ

オペレーティング・システムに環境変数を保存する

Pythonで環境変数を作りたくないとき、素早く設定したいときがある。幸運なことに、これはコマンドラインから実行できます。ここで紹介する例はUnixライクなシステム(Mac、Linuxなど)で動作します。 Windows環境変数のチュートリアル.

前の例では USERはオペレーティング・システムによって設定された環境変数で、誰があなたのコンピューターを使っているかを表しています。オペレーティング・システムはこの変数を自動的に作成しますが、自分で環境変数を作成することもできます。

コマンドラインを開き、次のように入力すれば、コマンドラインからすべての環境変数を見ることができる(Unix系システムで):

export

このenvコマンドは、シェルで利用可能なすべての変数をリストアップする。

ここでは、export変数の構文を使ってコマンドラインに環境変数を作成する方法を説明する:

export VONAGE_API=your_api

これは VONAGE_APIという変数を作成し、その値を your_api.このように任意の変数の値を表示することができる:

echo $VONAGE_API

上のコードを実行すると、出力として your_apiと出力される。

環境変数をファイルに保存する

ターミナル/コマンドラインを使って新しい環境変数を作成すると、その環境変数はそのセッションにのみ存在します。ターミナルを閉じると、環境変数はもう存在しません。プログラミングをしていると、環境変数を持続させて、コードを実行するたびに使えるようにしたいことがよくあります。

環境変数を永続化する1つの方法は、envファイルを使うことだ。 .envという名前が付いていることが多い)です。これはキーと値のペアを保存するシンプルなテキストファイルです。

環境変数を保存するために .envファイルを使って環境変数を保存する方法を説明します。

まず、ターミナルを使用して、このチュートリアル用に新しいフォルダを作成し、その中に移動して、次のファイルを作成します。 .envファイルを作成します:

mkdir env_variables_tutorial cd env_variables_tutorial touch .env

次の行を .envファイルに追加する:

VONAGE_API=your_api

python3 -m venv venv . ./venv/bin/activate

これでPython仮想環境に入ったので、必要なパッケージをインストールできる。

pip install python-dotenv

これで dotenvモジュールを使うことができます。 .envファイルからPythonがアクセスできる環境に環境変数をロードします。 osモジュールでアクセスできます。以下の内容でPythonファイルを作成する:

from dotenv import load_dotenv
import os

load_dotenv()  # This line brings all environment variables from .env into os.environ
print(os.environ['VONAGE_API'])

この load_dotenv関数は環境変数を .envファイルから os.environこの環境変数は、オペレーティング・システムによって設定された他の環境変数と同様に使用することができる。

クラウドに環境変数を保存する

本番用のソフトウェアを作成する場合、おそらく自分のコンピューターから実行することはないだろう。その代わりに、サーバー上でコードを実行することがほとんどでしょう。

つまり、プロダクションでコードを実行する場所の環境変数を設定したり取得したりする方法を知っておく必要があるということだ。

ここでは、クラウドプロバイダーのリストと、それらを使った環境変数の取り扱いに関する詳細情報を入手できる場所を紹介する:

CI/CDシステムに環境変数を保存する

GitHub Actions、CircleCI、Travis、JenkinsのようなクラウドベースのCI/CDシステムを使っている場合は、それらのシステムに環境変数を保存することもできる。

プロジェクトにGitHubを使用している場合、"Settings "タブに移動し、"Security "の下にある "Secrets and variables "設定でAPIキーなどを設定することで、環境変数をリポジトリの設定に保存することができます。

Screenshot of the Secrets and Variables menu in GitHub settings. The item labeled Actions is selected.

ここで、オプションをクリックして値を設定すると、新しいリポジトリシークレットを作成できます。これで、GitHub のアクションでシークレットを使えるようになります。

Screenshot of the Actions secrets New secret page. VONAGE_API_SECRET is entered as the Name, and my-secret-api-key-to-use-vonage-applications is entered as the Secret.

に関する情報はたくさんあります。 GitHub Actions で環境変数を設定するサークルCI, Travisそして ジェンキンスその他のプロバイダーに関する情報も提供しています。

ユニバーサル・シークレット・マネージャーによる環境変数の保存

秘密を .envファイルに保存すると、環境変数が持続するが、いくつかの問題がある。

例えば、あなたが10人のチームにいたとする。全員が自分の秘密を .envファイルでそれぞれの秘密を管理している。その場合、10人全員が自分の .envファイルを更新しなければならない。

あるいは、HerokuからAWSに乗り換えることにしたらどうだろう?その場合、新しいプラットフォームでのシークレットの扱い方を学ばなければならず、余分な作業が必要になる。

このような問題を解決するために、プログラマーの中には を使うプログラマーもいる。.ユニバーサルシークレットマネージャーを使えば、あなたの秘密を一か所に保存することができ、チーム全員がアクセスできるようになる。

Screenshot of multiple secrets managed in Doppler.

ユニバーサル・シークレット・マネージャーを使えば、シークレットはローカル・マシンにもクラウド・プロバイダーにも依存しないので、どこでコードを実行してもシークレットを持ち運ぶことができる。

ボーナス:外部APIで環境変数を使う

外部APIのサンプル・プロジェクトやサンプル・コード・スニペットを使っている場合、それを使いやすくするためのツールが、オーナー/メンテナによって提供されていることがある。多くの場合、ツールを最適に設定するために環境変数を使用する必要があります。

Vonage では、Python コードサンプルで環境変数を使用しています。 PythonコードサンプルSMSの送信、電話の発信、認証コードの送信、詐欺スコアのチェック、その他もろもろ。

例えば VonageのNumber Insight APIを使用したいとします。を使って電話番号の情報を取得したいとします。この場合 コードサンプルを使うとよいでしょう。

このサンプルコードを使用するには、まず Vonageアカウントを作成する。(心配しないでください、無料です!)を作成し、APIコールを認証するためのAPIキーとシークレットを取得してください。

次に GitHub リポジトリ.これが完了したら、新しいPython仮想環境を作成し、必要な依存関係をインストールする:

deactivate # if the virtual environment from earlier is still active python3 -m venv venv . ./venv/bin/activate pip install -r requirements.txt

最後に .env.distファイルを .envに変更し、APIキーとシークレットを追加する。 INSIGHT_NUMBERの値を購入した番号に変更します。APIキーとシークレットは API設定セクションにあります。 Vonage Developer Dashboard.

ファイルを更新したら .envファイルを更新したら、コードを実行する準備ができている:

python number-insight/ni-basic.py

入力した電話番号の情報が表示されているはずです。つまり、Pythonファイル自体を編集することなく、VonageのNumber Insight APIを使って環境変数から電話番号を調べたことになります!これは環境変数を使う大きな利点です。

最終的な感想

環境変数の取得と設定は、プロダクションソフトウェアを作成する上で不可欠な要素です。このチュートリアルを終えた方は、Python を使って環境変数を取得・設定する方法に慣れていると思います。

また、シークレットを保存するためのさまざまなオプションも理解できただろう。OSを使って一時的にシークレットを設定する、.envファイルに保存する、クラウドに保管する、ユニバーサル・シークレット・マネージャーを使う、などだ。どの方法を使うかは、あなたが取り組んでいるプロジェクトの状況によって異なります。もっと読みたいなら 環境変数で秘密鍵を使うに詳しい。

Python以外の言語でプログラミングをお考えですか?私たちの 環境変数の使い方.

ご質問がある場合、またはあなたが作っているものを共有したい場合は、こちらをクリックしてください。

最新の開発者向けニュース、ヒント、イベント情報をお届けします。

シェア:

https://a.storyblok.com/f/270183/400x400/92109caf6a/max-kahan.png
Max KahanVonage 元チームメンバー

マックスはPythonデベロッパー・アドボケイトであり、通信API、機械学習、デベロッパー・エクスペリエンス、ダンスに興味を持つソフトウェア・エンジニアだ!物理学を専攻していたが、現在はオープンソースのプロジェクトに携わり、開発者の生活をより良くするためのものを作っている。