Docker build時に「This script does not work on Python 3.8」エラーが出る原因と対処法



エラー内容

DockerfileでPython 3.8環境を構築する際、get-pip.pyの実行時に以下のエラーが発生しました。

該当のDockerfileでは、以下のようにpipのインストールスクリプトを取得していました。

原因

https://bootstrap.pypa.io/get-pip.py は常に最新版のget-pip.pyが配信されるURLです。

Python 3.8は2024年10月にサポート終了(EOL)を迎えており、それに伴い最新のget-pip.pyがサポートする最低バージョンがPython 3.9に引き上げられました。

そのため、以前は問題なくビルドできていたDockerfileでも、同じURLから取得したget-pip.pyがPython 3.8で動作しなくなったというわけです。

解決策

Python 3.8専用のget-pip.pyが別URLで提供されています。ダウンロードURLを以下のように変更するだけで解決できます。

なお、Python 3.8以外のEOLバージョンについても同様に、バージョン別のURLが用意されています。

Pythonバージョン get-pip.py URL
3.8 https://bootstrap.pypa.io/pip/3.8/get-pip.py
3.7 https://bootstrap.pypa.io/pip/3.7/get-pip.py
2.7 https://bootstrap.pypa.io/pip/2.7/get-pip.py

補足

Python 3.8はEOLを迎えているため、セキュリティアップデートも提供されません。可能であればPython 3.9以降へのアップグレードを検討することをおすすめします。

今回のように、外部URLから最新版のスクリプトを取得するDockerfileは、依存先の更新によって突然ビルドが失敗することがあります。Dockerfileを長期間メンテナンスする場合は、バージョンを明示的に固定することを意識しておくとよいでしょう。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

ITパスポート、基本情報技術者、応用情報技術者などIPAが提供する国家資格の過去問を学べるモバイルアプリをリリースしました。
詳しくは下記のプレスリリースをご覧ください。
https://prtimes.jp/main/html/rd/p/000000008.000073303.html

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Python

Posted by ちこ