Install Python3.12.8 on Debian 12

Debian

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

タイトルとURLをコピーしました