ardririyの足跡

Python3.13を手元でビルドとかしてみる

Python3.13を手元でビルドとかしてみる

Python 3.13がリリースされました(リリースページ)。個人的にはこのバーションで採用された新たな1インタプリタをとても気に入っており、個人的に動かすPythonはすべてこのバージョン以降で統一したいと思っています。 nix-shellとかでさくっと使えるようにすれば良いのはそうなのですが、そうできない事情が幾つかあるので手元でビルドするメモを残しておきます。 なお、この文脈におけるPythonはCPythonです。

ソースをダウンロードする

冒頭に載せたリリースページにおいてあるソースコードをダウンロードして解凍します。ここにダウンロード直リンクを載せるのはevilだと思うのでご自身で探してください。

$ wget <download url> # download
$ xz -dc Python-3.13.0.tar.xz | tar xfv - # 解凍

インストール

READMEに書いてある手順に従ってインストールすればよいです。(素のwindowsなどと言った超がつく珍しいユーザではない限り2)以下の手順でできます。多分...

$ ./configure
$ make
$ make test
$ sudo make install

エラーと解決

configure: error: C compiler cannot create executables

ビルド関連のツールが足りてないっぽいのでとりあえずそれっぽいのものを全ツッパしておくと解決します3。

$ sudo apt install build-essential libssl-dev zlib1g-dev libffi-dev

使用するバージョンを切り替える

今はまだ旧pythonがデフォルトになってるので、変える。

$ which python3
/usr/bin/python3

$ python3 --version
Python 3.10.12

新しいバージョンのpythonがどこにあるかを探す。対して量がなかったのでwhich -a python3の結果に対して<path> --versionを総当りして探した。 で多分/usr/bin/python3はシンボリックリンクになっていると思う4 ので、これをさっき見つけた3.13のパスに張り替えれば良い。

$ sudo rm /usr/bin/python3
$ sudo ln -s /usr/local/bin/python3 /usr/bin/python3

$ python3 --version
Python 3.13.0

最後にversionが変わっていることを確認すればOK。落としてきた圧縮ファイルなどはいらないので消しておこう。

おわりに

version 3.13になって、exitだけでインタプリタを抜けれて神になった。みんなもやったほうが良いです。あんまり関係ないけど手元でビルドしたらついででpip3がついてきてくれてラッキー。自前ビルドっていいね。

Footnotes

  1. 「新しい」と言っていいのかはリリースノートをちゃんと読んでいないのでわからないが、ユーザ目線では新しいでしょ 知らんけど ↩

  2. 私は一時期wslをほぼ完全に制限した状態で開発環境を作ってやっていた時期がありましたが普通に苦しかったので、やめたほうがいいと思います ↩

  3. やめたほうがいいです。ちゃんと調べましょう ↩

  4. だいたいどの環境でもそうだと思うけどちゃんと調べましょう ↩