Python 開発者は、API キー、API シークレット、データベース名など、他の人に見られたくないデータを扱うことがよくあります。
プログラマがこれらのシークレットを保存する方法の 1 つは、環境変数に保存することです。この記事では、Python での環境変数の使用について知っておくべきことをすべて学びます。 Python 環境変数の設定方法、取得方法、すべての秘密を安全に保つためのさまざまな方法を紹介します。最後に、Vonage での実際の使用例を紹介します。
記事を読み進めるには、以下のリンクを使用してください:
環境変数 (「環境変数」とも呼ばれます) は、プログラムの外部に保存する変数で、プログラムの実行方法に影響を与える可能性があります。たとえば、API のキーとシークレットを含む環境変数を設定できます。プログラムは API に接続するときにこれらの変数を使用する可能性があります。
ソース コードの代わりにシークレットを環境に保存すると、いくつかの利点があります。
本質的に、環境変数を使用すると、プログラム自体を変更せずにプログラムの動作を変更できます。
環境変数はオペレーティング システムに保存できますが、環境変数を使用する他の方法もあります。それについては後ほど説明します。
このチュートリアルを進めるには、マシンに Python がインストールされている必要があります。 Python は、Python の公式 Web サイトからダウンロードしてインストールできます。
組み込みの OS モジュールを使用して、Python で環境変数を取得および設定します。
次のコードを Python ファイルに保存し、この Python プログラムを実行すると、プログラム内のすべての環境変数を表示できます。
このコードを実行すると、Python インタープリターはオペレーティング システムのすべての環境変数を出力する必要があります。 Python 辞書のように、os.environ 内のさまざまな環境変数にアクセスできます。 Python で環境変数を取得する 2 つの方法は次のとおりです:
上記の Python コードの最後の 2 行は同じことを行っており、どちらもオペレーティング システムから USER 環境変数を取得しています。ただし、最初の方法を使用する場合、変数が見つからない場合、Python は例外をスローします。
Python アプリケーションの実行に環境変数が必要な場合は os.environ['MY_ENVIRONMENT_VARIABLE'] を使用し、オプションの場合は os.environ.get('MY_ENVIRONMENT_VARIABLE') を使用することをお勧めします。
Python で環境変数を設定するには、辞書を使用する場合と同様に、環境変数を os.environ オブジェクトに追加できます。ただし、文字列はインタプリタが実行されているシェルに直接渡されるため、文字列のみが許可されます。
環境変数を更新するには、まったく同じ方法で環境変数をオーバーライドします。
環境変数を保存したい理由はさまざまであるため、環境変数を保存する方法もさまざまです。ローカル マシンに何かを設定するだけで済む場合もありますが、実稼働環境でアプリケーションを実行する必要がある場合もあります。これらの使用例では、異なるアプローチが必要です。
以下では、Python の環境変数を保存する 5 つの方法を示します。
何かをすぐに設定したいだけの場合、Python を使用して環境変数を作成したくない場合があります。幸いなことに、これはコマンドラインから実行できます。ここで挙げる例は Unix 系システム (Mac、Linux など) で動作しますが、Windows を使用している場合は、このチュートリアルで環境変数を取得および設定する方法を学ぶことができます。
前の例では、USER はオペレーティング システムによって設定された環境変数であり、コンピュータを誰が使用しているかを表します。この変数はオペレーティング システムによって自動的に作成されますが、独自の環境変数を作成することもできます。
コマンド ラインを開いて次のように入力すると、コマンド ラインからすべての環境変数を確認できます (Unix 系システムの場合)。
エクスポート
これにより、コマンドライン シェルがアクセスできるすべての環境変数のリストが表示されます。
コマンドラインで環境変数を作成する方法は次のとおりです:
VONAGE_API=your_api をエクスポート
これにより、VONAGE_API という変数が作成され、その値が your_api に設定されます。次のように任意の変数の値を出力できます:
$VONAGE_API をエコー
上記のコードを実行すると、出力として your_api が表示されます。
ターミナル/コマンドラインを使用して新しい環境変数を作成すると、その環境変数はそのセッションに対してのみ存在します。ターミナルを閉じると、環境変数は存在しなくなります。プログラミングをしているときは、コードを実行するたびに環境変数を使用できるように、環境変数を永続化したいと思うことがよくあります。これを実現する 1 つの方法は、それらをファイル (.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 ファイルを作成します:
load_dotenv 関数は、環境変数を .env ファイルから os.environ に取り込み、オペレーティング システムによって設定される他の環境変数と同様に使用できます。
実稼働用のソフトウェアを作成する場合、おそらくそれをコンピューターから実行することはありません。代わりに、サーバー上でコードを実行する可能性が高くなります。
つまり、運用環境でコードを実行するどこからでも環境変数を設定および取得する方法を知る必要があります。
ここにクラウド プロバイダーのリストと、それらを使用した環境変数の処理に関する詳細情報を入手できます:
GitHub Actions、CircleCI、Travis、Jenkins などのクラウドベースの CI/CD システムを使用している場合は、環境変数をシステムに保存することもできます。
プロジェクトに GitHub を使用している場合は、[設定] タブに移動し、[セキュリティ] の [シークレットと変数] 設定で API キーなどを設定することで、リポジトリの設定に環境変数を保存できます。 "。
ここで、オプションをクリックして値を設定することで、新しいリポジトリ シークレットを作成できます。これは、GitHub Actions の実行で利用できるようになります。
GitHub Actions、CircleCI、Travis、Jenkins を使用した環境変数の設定に関する情報や、他のプロバイダーに関する情報が数多くあります。
シークレットを .env ファイルに保存すると環境変数は保持されますが、いくつか問題があります。
たとえば、10 人のチームに所属しているとします。誰もが .env ファイル内のシークレットを追跡しており、シークレットの 1 つが変更されます (新しい API キーを取得したとします)。その場合、10 人全員が .env ファイルを更新する必要があり、あまり効率的ではありません。
あるいは、Heraku から AWS に切り替えることにした場合はどうなりますか?その場合、新しいプラットフォームでシークレットを扱う方法を学ぶ必要があり、追加の作業が必要になります。
これらの問題を解決するために、一部のプログラマーは Doppler のようなユニバーサル シークレット マネージャーを使用します。ユニバーサル シークレット マネージャーを使用すると、シークレットを 1 か所に保存できるため、チームの全員がシークレットにアクセスできます。
ユニバーサル シークレット マネージャーを使用すると、シークレットはローカル マシンやクラウド プロバイダーから独立しているため、コードを実行する場所に関係なくシークレットを持ち運ぶことができます。
外部 API のサンプル プロジェクトまたはサンプル コード スニペットを使用している場合、使いやすくするためのツールが所有者/メンテナーによって提供されることがあります。多くの場合、ツールを最適にセットアップするには環境変数を使用する必要があります。
Vonage では、SMS の送信、電話の発信、確認コードの送信、不正スコアのチェックなどのために、Python コード サンプルの環境変数を利用しています。
Vonage の Number Insight API を使用して、いくつかの電話番号に関する情報を取得したいとします。この場合、このようなコード サンプルを使用して、Python で迅速に動作させることができます。
このサンプル コードを使用するには、まず Vonage アカウントを作成し (ご心配なく、無料です!)、API 呼び出しを認証するための API キーとシークレットを取得します。
次に、https://github.com/Vonage/vonage-python-code-snippets/ でリポジトリのクローンを作成します。これが完了したら、新しい Python 仮想環境を作成し、
で必要な依存関係をインストールします。入力した電話番号に関する情報が表示されるはずです。これは、Python ファイル自体を編集する必要がなく、Vonage の Number Insight API を使用して環境変数から電話番号を検索したことを意味します。これは、環境変数を使用することの大きな利点です。
deactivate # 以前の仮想環境がまだアクティブな場合は、 python3 -m venv venv 。 ./venv/bin/activate pip install -rrequirements.txt
最後に、.env.dist ファイルの名前を .env に変更し、API キーとシークレットをファイルに追加し、INSIGHT_NUMBER の値を検索する番号に変更します。これで、
を使用してコードを実行する準備が整いました。pythonnumber-insight/ni-basic.py
入力した電話番号に関する情報が表示されるはずです。これは、Python ファイル自体を編集する必要がなく、Vonage の Number Insight API を使用して環境変数から電話番号を検索したことを意味します。これは、環境変数を使用することの大きな利点です。
環境変数の取得と設定は、実稼働ソフトウェアの作成に不可欠な部分です。このチュートリアルを完了すると、Python を使用して環境変数を取得および設定する方法を理解できるようになります。
また、シークレットを保存するためのさまざまなオプション (OS を使用してシークレットを一時的に設定する、.env ファイルにシークレットを保存する、クラウドに保存する、ユニバーサル シークレット マネージャーを使用する) についても理解できました。どの方法を使用するかは、取り組んでいるプロジェクトの状況によって異なります。さらに詳しく読みたい場合は、環境変数での秘密キーの使用に関するこの投稿に詳しい情報が記載されています。
Vonage API の使用を開始したい場合は、無料の開発者アカウントにサインアップできます (無料クレジット付き!)。このチュートリアルについてご質問がある場合は、Vonage コミュニティ Slack でお気軽にご連絡ください。または、以前は Twitter として知られていた X でメッセージを送ってください。
それでは、独自の Python プロジェクトで環境変数を使用してみましょう!
以上がPython 環境変数 (Env Vars): 入門書の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。