依存関係の扱い


Python で記述された Cloud Functions の依存関係を指定するには、2 つの方法があります。1 つは pip パッケージ マネージャーの requirements.txt ファイルを使用する方法、もう 1 つは関数と一緒にローカル依存関係をパッケージ化する方法です。

Pipfile / Pipfile.lock 標準を使用した依存関係の仕様はサポートされていません。プロジェクトにこれらのファイルが含まれないようにする必要があります。

pip を使用した依存関係の指定

Python における依存関係は pip で管理され、requirements.txt というメタデータ ファイルで表現されます。このファイルは、関数のコードを含む main.py ファイルと同じディレクトリに置く必要があります。

関数をデプロイすると、Cloud Functions は pip を使用して、requirements.txt ファイル内で宣言されている依存関係をダウンロードしてインストールします。

requirements.txt ファイルには、パッケージごとに 1 行が含まれています。各行にはパッケージ名が含まれます。パッケージ名以外に、リクエストされたバージョンが含まれている場合もあります。詳細については、requirements.txt のリファレンスをご覧ください。

requirements.txt ファイルの例を次に示します。

requests==2.20.0
numpy

ローカル依存関係をパッケージ化する

依存関係を関数とまとめてパッケージ化してデプロイすることもできます。この方法は、pip パッケージ マネージャーを使用して依存関係を利用できない場合や、Cloud Functions 環境のインターネット アクセスが制限されている場合に便利です。

たとえば、次のようなディレクトリ構造を使用するとします。

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

この場合、次の import ステートメントを使用して、通常どおり localpackage からコードをインポートできます。

# Code in main.py
from localpackage import script

このアプローチでは、いずれの setup.py ファイルも実行されません。このようなファイルを含むパッケージもバンドルできますが、Cloud Functions で正しく実行されない場合があります。