Python 3.8が一般提供になりました。

Python 2 ランタイムと Python 3 ランタイムの違い

Python 3 ランタイムは、3 つのアイデアを中核に開発されています。

  • アプリでは、Python Software Foundation が提供する最新バージョンのオープンソース Python インタープリタが使用されます。
  • Python のパッケージとフレームワークの豊富なエコシステム(C コードを使用するものを含む)をアプリで使用するには、依存関係を requirements.txt ファイルの中で宣言します。
  • App Engine での開発には、プラットフォーム固有の特別な知識は不要です。

全体的な目標は、開発が十分に慣用的な形で行われるようにし、アプリを完全に移植可能にして標準的な Python 環境で実行できるようにすることにあります。作成するのは標準の Python アプリであって、App Engine の Python アプリではありません。この転換に伴い、バンドルされた App Engine API とサービスをアプリの中核的な機能で使用することがなくなりました。代わりに、Google Cloud APIs とサービス、またはサードパーティの API とサービスを使用します。

Python 3 ランタイムにバンドルされた App Engine サービスがない

Python 3 ランタイムから、App Engine スタンダード環境には Memcache や Task Queues などの App Engine バンドル サービスが含まれなくなりました。代わりに Google Cloud が提供するスタンドアロン プロダクトが、Python 2 ランタイムのほとんどのバンドル サービスに相当します。Google Cloud で個別のプロダクトとして提供されないバンドル サービス(画像処理、検索、メッセージングなど)については、サードパーティ プロバイダや他の回避策を使用いただけます。移行ガイドをご覧ください。

その他の 2 つのランタイム間の違い

以降のセクションでは、その他の Python 2 ランタイムと Python 3 ランタイムの違いについて説明します。

構成ファイル

App Engine スタンダード環境の Python 3 ランタイムでアプリを実行する前に、App Engine で使用する構成ファイルの一部を変更する必要があります。

  • app.yamlapp.yaml 構成ファイル内の一部のフィールドの動作が変更されています。移行ガイドで説明しているように、非推奨フィールドを削除し、その他のフィールドを更新します。

  • appengine_config.py。Python 2 ランタイムでは、このファイルを使用してクライアント ライブラリがインストールされ、定数と「フック関数」の値が提供されます。Python 3 ランタイムでは、このファイルは使用されません。

    その代わりに、Python 3 ランタイムでは、ネイティブ コードを使用する依存関係を含む、依存関係のインストールに標準 requirements.txt ファイルが使用されます。詳細については、Python 3 ランタイムで 依存関係を指定するをご覧ください。

動的コンテンツのリクエストをルーティングするために必要なウェブ フレームワーク

Python 2 ランタイムでは、app.yaml ファイルで URL ハンドラを作成して、特定の URL または URL パターンがリクエストされたとき実行するアプリを指定できます。

Python 3 ランタイムでは、アプリが app.yaml で URL ハンドラを使用するのでなく、代わりに Flask や Django などのウェブ フレームワークを使用して動的コンテンツのリクエストをルーティングする必要があります 静的コンテンツの場合は、アプリの app.yaml ファイルで引き続き URL ハンドラを作成できます。

テスト

dev_appserver に依存するよりも、Python に対して汎用的なテスト方法を使用することをおすすめします。たとえば venv を使用すれば、分離されたローカル Python 3 環境を作成できます。標準的な任意の Python テスト フレームワークを使用して、単体テスト、統合テスト、システムテストを作成できます。サービスのデベロッパー版を設定するか、多くの Google Cloud プロダクトで用意されているローカル エミュレータを使用することもできます。

これを使用するためのオプション機能として、Python 3 をサポートする更新された dev_appserver のアルファ版を提供しています。このオプションについて詳しくは、ローカル開発用サーバーの使用をご覧ください。

デプロイ

Python 3 では、appcfg.py を使用したデプロイはサポートされていません。アプリのデプロイには gcloud コマンドライン ツールを使用します

Python 2 から Python 3 への移行

Python 3 ランタイムへの移行についての詳細は、Python 3 標準ランタイムへの移行をご覧ください。