Python アプリケーションの依存関係は標準 requirements.txt
ファイルで宣言されています。次に例を示します。
Flask==MAJOR.MINOR.PATCH
google-cloud-storage
MAJOR、MINOR、PATCH は、目的の Flask バージョン番号に置き換えます。
App Engine にデプロイすると、デプロイしたアプリと合わせて、requirements.txt
ファイルで指定した依存関係が自動的にインストールされます。Linux 対応の任意の Python パッケージを利用できます。これにはネイティブの C 拡張機能を必要とするパッケージも含まれます。
デフォルトでは、App Engine は取得した依存関係をキャッシュに保存し、ビルド時間を短縮します。キャッシュに保存されていないバージョンの依存関係をインストールするには、次のコマンドを使用します。
gcloud app deploy --no-cache
Artifact Registry によるプライベート依存関係
Python アプリのプライベート依存関係をホストする必要がある場合は、Artifact Registry Python リポジトリを使用できます。アプリのデプロイ時に、ビルドプロセスにより Cloud Build サービス アカウントの Artifact Registry 認証情報が自動的に生成されるため、追加の認証情報を生成する必要はありません。プライベート依存関係を含めるには、Artifact Registry URL と関連パッケージを requirements.txt
ファイルに追加します。
複数のリポジトリを指定するには、Artifact Registry 仮想リポジトリを使用して、pip がリポジトリを検索する順序を安全に制御します。次に例を示します。
--index-url REPOSITORY_URL
sampleproject
Flask==MAJOR.MINOR.PATCH
google-cloud-storage
REPOSITORY_URL は、次のようなレジストリ アドレスに置き換えます。
https://REGION_ID-python.pkg.dev/PROJECT_ID/REPOSITORY_NAME/simple
他のリポジトリによるプライベート依存関係
依存関係は、SSH キーにはアクセスできない Cloud Build 環境にインストールされます。SSH ベースの認証を必要とするリポジトリでホストされているパッケージは、プロジェクト ディレクトリにコピーし、pip パッケージ マネージャーを使用してプロジェクト コードと一緒にアップロードする必要があります。
プライベート依存関係を使用するには:
pip install -t lib my_module
を実行して、lib
という名前のローカル フォルダに依存関係をコピーします。空の
__init__.py
ファイルをlib
ディレクトリに追加して、モジュールに変換します。モジュールをアプリにインポートします。たとえば次のようにします。
import lib.my_module
依存関係をローカルにインストールする
アプリケーションをローカルで開発してテストする場合は、venv
を使用してアプリケーションの依存関係をシステム パッケージから分離することをおすすめします。これにより、依存関係がローカルマシンとデプロイしたアプリケーションで確実に同じバージョンが使用されるようにすることもできます。
venv
を使用して依存関係をインストールする手順は次のとおりです。
Mac OS / Linux
- 分離された Python 環境を作成します。
python3 -m venv env
source env/bin/activate
- 現在のディレクトリにサンプルコードが含まれていない場合は、
hello_world
サンプルコードが含まれるディレクトリに移動します。その後、依存関係をインストールします。cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
Windows
PowerShell を使用して Python パッケージを実行します。
- インストールされた PowerShell を探します。
- PowerShell へのショートカットを右クリックし、管理者として PowerShell を起動します。
- 分離された Python 環境を作成します。
python -m venv env
.\env\Scripts\activate
- プロジェクト ディレクトリに移動し、依存関係をインストールします。現在のディレクトリにサンプルコードが含まれていない場合は、
hello_world
サンプルコードが含まれるディレクトリに移動します。その後、依存関係をインストールします。cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
これにより、アプリをローカルで実行するときに、requirements.txt
ファイルで宣言されている依存関係のみが使用できるようになります。デプロイ中に App Engine によってインストールされる依存関係は、env/
ディレクトリの内容ではなく、requirements.txt
ファイルの内容に基づいています。
ウェブ フレームワークのインストール
アプリでウェブ リクエストに対応できるようにするには、ウェブ フレームワークを使用する必要があります。以下を含む任意の Python ウェブ フレームワークを使用できます。
特定のウェブ フレームワークを使用するには、次の requirements.txt
に追加します。
Flask==MAJOR.MINOR.PATCH
WSGI サーバーをインストールする
組み込み WSGI サーバーが搭載されたウェブ フレームワークがありますが、本番環境のトラフィックの処理に適しているのは少数です。大部分のウェブ アプリケーションは、Gunicorn、uWSGI、Waitress などのスタンドアロン WSGI サーバーを使用します。WSGI サーバーのインストール、構成、使用方法については、アプリケーションの起動をご覧ください。
Cloud クライアント ライブラリのインストール
Python 用 Cloud クライアント ライブラリは、Google Cloud サービスへのアクセス用クライアント ライブラリで、記述する必要があるボイラープレート コードを著しく減らします。ライブラリは、高いレベルの API 抽象化を提供するため、理解しやすくなります。Python 固有のスタイルに従っているので、標準 Python ライブラリとうまく連携し、コードベースとの統合も向上します。
たとえば、Datastore や Cloud Storage に対応する Python クライアント ライブラリをインストールして、それらのサービスをアプリと統合できます。
Cloud Datastore 用の Python クライアント ライブラリをインストールするには:
クライアント ライブラリをローカルにインストールするには、次のように
pip
を使用します。pip install google-cloud-datastore
認証をセットアップします。Python 用 Cloud クライアント ライブラリを構成して、自動で認証を処理できます。クライアント ライブラリも Google Cloud CLI を使用して自動的に認証を処理できます。
gcloud auth login
Datastore クライアント ライブラリのリファレンスを使用して、Cloud Datastore サービスのサポートをアプリに実装します。
サポートされている Google Cloud サービスに対する Python 用 Cloud クライアント ライブラリすべての一覧については、API と Python ライブラリをご覧ください。