プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2023/11/17

[Python] Pyinstaller, Nuitka で作成した実行ファイルで GLIBC のエラーが発生する

event_note2023/11/17 5:14

pyinstaller, nuitka で作成した実行ファイルを別のマシンで実行するとエラーが出て動きませんでした。

具体的には以下のような GLIBC に関するエラーが表示されました。

Pyinstaller の場合

[10562] Error loading Python lib '/home/username/dist/main/libpython3.11.so.1.0': dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.35' not found (required by /home/username/dist/main/libpython3.11.so.1.0)

Nuitka の場合

./sample.bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./sample.bin)
./sample.bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./sample.bin)
./sample.bin: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.35' not found (required by /home/username/main.dist/libpython3.11.so.1.0)
./sample.bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/username/main.dist/libpython3.11.so.1.0)
./sample.bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/username/main.dist/libpython3.11.so.1.0)
./sample.bin: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/username/main.dist/libpython3.11.so.1.0)

これの回避策は、サポートしたいシステムより古いシステムでビルドを行うことだそうです。

私の場合、python:3.11 の Docker イメージを使ってビルドを行っていましたが、このイメージのディストリビューションは Debian 12 でした。 そこでビルドした成果物を Ubuntu 20.04 のマシンで動かすと上記のエラーが発生しました。

なので、ビルドに使用する Docker イメージを python:3.11-buster に変更したところ、エラーなく動作するようになりました。

尚、buster というのは Debian のコードネームのことで、Debian 10 のことだそうです。
詳細は以下を参照してください。