python環境の再構築#

sphinx+netlify環境にてpython3.8からpython3.13環境に再構築を行った際の対応のまとめ

実現したいこと#

local環境も、netlify環境もpython3.13ベースで動作させたい。現状はバージョン不一致でかつnetlify側が3.8縛り。

修正前の動作環境#

ローカルPC:

Python3.10ベースで動作、python3.10で動作

netlify:

Ubuntu Focal 20.04 、Python3.8で動作

ローカル環境の整備#

python3.10のアンインストール#

過去にインストーラで入れてたものを削除。今後はMicrosoft Storeに統一。

後のpipxやpoetryでPATHエラーになる場合がある#

主なエラー内容
  • Fatal error in launcher: Unable to create process using ‘C:\Python\Python310\python.exe’

  • No Python at ‘C:\Python\Python310\python.exe’

対策として以下を確認、予め削除しておく。
  • %HOMEPATH%\APPDATA\Roaming\Python

  • %HOMEPATH%\APPDATA\Local\pipx

  • %HOMEPATH%\APPDATA\Local\poetry

python3.13のインストール#

Microsoft Storeからpython3.13を選択して入手

pipx整備#

pipx整備#
python -m pip install --upgrade pip
python -m pip install --user pipx
python -m pipx ensurepath

poetry整備#

poetry整備#
pipx install poetry

pyproject.toml修正#

修正前:

python = “^3.10”

修正後:

python = “^3.13”

確認#

ローカルビルドしてサイトを確認

netlify対応#

netlify側のOSイメージの最新化#

Ubuntu Focal 20.04の場合、Python3.13に未対応のため、イメージを最新化する。

設定箇所:
netlify のWeb管理画面
> Site configuration
> Build & deploy settings
> Build image selection
修正前:

Ubuntu Focal 20.04

修正後:

Ubuntu Noble 24.04

netlify.toml修正#

参考:How to use configurable Python versions

netlify.toml#
1[build]
2environment = { PYTHON_VERSION = "3.13" }

netlify確認#

git push を実行。デプロイ結果を確認する。

バージョンの統一について#

対応方針#

ビルド手段をpoetryに統一する。

requirement.txtの修正#

修正前:

Pillow==9.5
pydata-sphinx-theme
myst-parser
sphinxcontrib-blockdiag
sphinx-sitemap
sphinxnotes-strike
sphinx-last-updated-by-git
sphinx-git

修正後:

poetry

netlify.tomlの修正#

修正前:

command = "bash ./build.sh"

修正後:

command = "poetry install --no-root && poetry run poe doc"

その他のエラー#

blockdiag + Pillow(画像描画)#

発生エラー:

‘FreeTypeFont’ object has no attribute ‘getsize’

経緯:

Pillow = "==9.5.0" が Python3.13対応でエラーとなる。 Pillow = "^10.0" へ修正したが、blockdiag がPillowの最新に対応していない。

暫定対策:

blockdiag についてはメンテも停止の様子にて断念。利用ページは削除。

今後に向けて:

代替として、graphviz の活用などを模索

記事情報

投稿日:

2025-03-23

投稿者:

mtakagishi