Python 2.7 の EOL に関する FAQ
最終更新日 2023年05月03日(水)
Table of Contents
Python 2 が廃止されるのはなぜですか?
Python 2 は、何年も前に Python 3 に置き換えられました。そのため、上流の Python プロジェクトは、廃止の日付を数回延期した後、2020 年 1 月 1 日に正式に Python 2 のサポートを終了しました。つまり、Python 2 の新しいバージョンは上流でリリースされていないため、セキュリティまたはバグ修正を受信しません。
Python 2 をサポートする Heroku スタックのバージョンはいくつですか?
Python 2 は 2023 年 4 月 30 日にサポート終了に達した、Heroku の最も古いスタックである Heroku-18 でのみサポートされています。
Heroku 上の既存の Python 2 アプリはどうなりますか?
Heroku 上の既存の Python 2.7 アプリケーションは、(Python バージョンに関連しない問題によって影響されない限り) 当面は引き続き動作します。
ただし、次の点に注意してください。
- Python 2 は 2020 年からセキュリティ修正を受信していないため、いくつかの修正されていないセキュリティの脆弱性が含まれています。そのため、アプリケーションのセキュリティを維持するために、新しい Python バージョンに移行することを強くお勧めします。
- Heroku-18 では、それ以上のビルド (コードのデプロイ) を実行できなくなったため、Python 2 アプリでは、まず新しい Heroku スタックにアップグレードする (これには Python 3 へのアップグレードも必要) まで更新できなくなります。詳細は、Heroku-18 のサポート終了に関する FAQ を参照してください。
Python 2 アプリでは引き続き技術サポートを受けられますか?
サポートが終了した言語バージョンは Heroku のサポートポリシーの範囲外になるため、まずサポートされている Python バージョン にアップグレードしないと、Python 2 アプリケーションは技術サポートを受けられなくなります。
アプリケーションを Python 3 に移行するにはどうすればよいですか?
上流の Python プロジェクトの「Porting Python 2 Code to Python 3」(Python 2 コードから Python 3 への移植) のガイドを参照してください。
アプリケーションがローカルで Python 3 との互換性を持つようになったら、Heroku でアプリケーションが確実に Python 3 を使用してビルドされるようにする必要があります。「Python ランタイムの指定」およびsupported Python versions (サポートされている Python バージョン) を参照してください。
Python 3 に移行できないときには、どのようなオプションがありますか?
Python 2 には、いくつかの修正されていないセキュリティの脆弱性が含まれているため、アプリケーションのセキュリティを維持するために、新しい Python バージョンに移行することを強くお勧めします。ただし、このリスクを進んで受け入れる場合は、引き続き Python 2 を使用できる方法として次の 2 つがあります。
- アプリケーションにそれ以上のコード変更や新しいデプロイが必要ない場合は、Heroku-18 スタックのサポートが終了した後でも、既存の Python 2 アプリケーションを変更なしで引き続き使用できます (詳細は、「Heroku-18 End-of-Life FAQ」(Heroku-18 のサポート終了に関する FAQ) を参照)。
- ただし、新しいコードのデプロイを引き続き実行したい場合は、1 つの代替手段として、代わりに Heroku の
container
スタックに移行し、従来のpython:2.7
Docker イメージを使用する方法があります (注意: これらの Docker イメージも 2020 年からセキュリティ更新を受信していません)。次を参照してください。