Python3.12をDebian12へインストールする記事です。
シェルスクリプト実行後、パスを通し、ターミナルを開き直して動作確認するまでの内容となっています、
※ /tmp の容量が足りないエラー予防のため、/tmpの容量を1GにしてからInstallpython3128ondebian12.shを実行することをお勧めします。
$ sudo nano /etc/fstab
# 以下一行を追加
tmpfs /tmp tmpfs defaults,size=1g 0 0 # tmpをメモリ上に作成
/etc/fstab 編集後、システム再起動を忘れずに。
$ sudo reboot
Installpython3128ondebian12.sh
#!/bin/bash
# インストールするPytionのバージョン
PYTION_VER="3.12.8"
# 依存関連パッケージインストール
sudo apt -y install pkg-config curl \
build-essential libssl-dev zlib1g-dev \
libbz2-dev libffi-dev libncurses-dev libncursesw5-dev \
libgdbm-compat-dev libgdbm-dev libsqlite3-dev libdb-dev \
liblzma-dev tk-dev uuid-dev libreadline-dev libncurses5-dev
# git インストール
git --version &> /dev/null
if [ $? -ne 0 ] ; then
echo "git インストールします"
sudo apt -y install git
else
echo "git インストール済みです"
fi
# python3.12.8ソースダウンロード、解凍
url=https://www.python.org/ftp/python/$PYTION_VER/Python-$PYTION_VER.tar.xz
curl -s $url | tar -xJ
cd Python-$PYTION_VER
# Setup.org がない場合の処理
if [ ! -e Modules/Setup.org ]; then
sudo cp Modules/Setup Modules/Setup.org
fi
# Setup 初期化
sudo cp Modules/Setup.org Setup
# Setup 編集
# Python-3.12.8/Modules/Setup #_socket socketmodule.c -> _socket socketmodule.c
sudo sed -i -e 's/#_socket socketmodule.c/_socket socketmodule.c/' Modules/Setup
# Python-3.12.8/Modules/Setup # _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \ -> _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
sudo sed -i -e 's/# _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \\/ _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \\/' Modules/Setup
# Python-3.12.8/Modules/Setup # -l:libssl.a -Wl,--exclude-libs,libssl.a \ -> -l:libssl.a -Wl,--exclude-libs,libssl.a \
sudo sed -i -e 's/# -l:libssl.a -Wl,--exclude-libs,libssl.a \\/ -l:libssl.a -Wl,--exclude-libs,libssl.a \\/' Modules/Setup
# Python-3.12.8/Modules/Setup # _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \ -> _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
sudo sed -i -e 's/# _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \\/ _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \\/' Modules/Setup
# Python-3.12.8/Modules/Setup # -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a -> -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a
sudo sed -i -e 's/# -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a/ -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a/' Modules/Setup
# python インストール開始
./configure --prefix="$HOME/.local" \
--enable-optimizations \
--with-lto \
PROFILE_TASK="-m test --pgo --timeout=60 -j8"
sudo make -j8
sudo make altinstall -j8
Installpython3128ondebian12.sh 実行
$ sudo chmod +x Installpython3128ondebian12.sh
$ ./Installpython3128ondebian12.sh
パスを通す
$ sudo echo "PATH=\${HOME}/.local/bin:\${PATH}" >> .bashrc
$ source ~/.bashrc
Installpython3128ondebian12.sh を実行したターミナルを閉じて、再度ターミナルを立ち上げる
Python3.12.8動作確認
$ echo -e "import sys\nprint(sys.version)" > python3128_test.py
$ python3.12 python3128_test.py
3.12.8 (main, Dec 7 2024, 14:42:42) [GCC 12.2.0]
参考にさせていただいたサイト
https://github.com/comfyanonymous/ComfyUI#installing
https://nissy-lab.com/blogs/python312-debian12/
https://qiita.com/fujine/items/72534731ebfda69ac124
https://qiita.com/hick0023/items/5e2d0c7bfe9b88172468
https://daeudaeu.com/python-build/#PATH