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整備#
python -m pip install --upgrade pip
python -m pip install --user pipx
python -m pipx ensurepath
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
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