Python 3.12以降、distutilsモジュールは廃止され、Python 3.13では公式に削除されています。この変更により、lambda関数でdistutilsを利用していたコードが動作しなくなる可能性があります。本記事では、distutilsの代替手段や、Python 3.13での対応方法について解説します。
1. distutilsの廃止とその影響
Python 3.12からdistutilsは標準ライブラリから削除されました。distutilsは以前、C拡張モジュールのビルドなどでよく使用されていましたが、今後はセットアップツール(setuptools)を使用することが推奨されています。これにより、旧コードが動作しなくなる場合があります。
例えば、以下のようなコードがある場合、Python 3.13では動作しません。
import distutils.util from strtobool
2. distutilsの代替としてsetuptoolsを使用する
distutilsの代わりに、setuptoolsというパッケージを使用することが推奨されています。setuptoolsはdistutilsの機能を引き継いでおり、Pythonのパッケージ管理において広く利用されています。
具体的には、distutilsのstrtobool関数の代わりに、setuptoolsのdistutils.utilからインポートして使用できます。次のようにコードを修正しましょう。
from setuptools._distutils.util import strtobool
3. Lambdaでの対応方法
AWS LambdaでPython 3.9から3.13にバージョンアップする場合、distutilsが使用されているコードはsetuptoolsを使用するように変更する必要があります。Lambdaのランタイムに合わせて、依存パッケージを更新し、コード内でdistutilsを使用していた部分をsetuptoolsに置き換えましょう。
Lambda関数内のコード変更により、Python 3.13ランタイムでも正常に動作するようにできます。依存関係をpipでインストールし直し、最新のランタイムに合わせて調整します。
4. まとめ
Python 3.13以降でdistutilsが廃止されることにより、setuptoolsを使った対応が求められます。特に、AWS Lambdaでのランタイム変更を行う場合、コードの見直しと依存パッケージの更新が必要です。これを機に、distutilsの代替であるsetuptoolsを活用し、今後のPythonのバージョンにも対応できるようにしておきましょう。
コメント