はじめに
この記事では、GitHub ActionsでPython 3.10を設定する手順、遭遇する問題、およびそれらを回避する方法について説明します。
GitHub ActionsでPython 3.10を設定する
GitHub Actionsは、プロセスを自動化するためのワークフローを使用します。これらのワークフローはYAMLファイルで定義されます。Python 3.10をワークフローで使用するには、ワークフローファイルにそのバージョンを指定する必要があります。通常、このファイルはリポジトリの.github/workflows/
ディレクトリに保存されます。ここでは、ワークフローファイルをsetup-python310.yml
と名付けます。
次のようにPython 3.10をGitHub Actionsのワークフローに設定するコードは次のようになります。
name: Setup Python 3.10
on:
workflow_dispatch:
jobs:
setup_python_310:
runs-on: ubuntu-20.04
steps:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.10
- name: Display Python version
run: python -c "import sys; print(sys.version)"
上記のワークフローでは、ジョブsetup_python_310
がUbuntu 20.04の仮想環境で実行されます。これは2つのステップから成り立っています。まず、望むPythonバージョン(この場合は3.10)の設定、次にそのPythonバージョンを表示してセットアップが正常に行われたことを確認します。このワークフローはworkflow_dispatch
イベントによって手動でトリガーされます。
しかし、上記の設定はYAMLが数値を解釈する方法に問題があるためうまく動作しません。
バージョンが見つからないエラー
ワークフローファイルでPython 3.10を正しく設定したにもかかわらず、実行が失敗し、Pythonバージョン3.1がローカルキャッシュに見つからないというエラーが発生します。
Version 3.1 was not found in the local cache
Error: The version '3.1' with architecture 'x64' was not found for Ubuntu 20.04.
The list of all available versions can be found here: https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json
問題はYAML言語自体にあります。YAMLでは、3.10のような浮動小数点数は小数として扱われ、末尾のゼロが削除されるため、3.10が3.1と解釈されてしまいます。
解決策:Pythonバージョンを正しくフォーマットする
YAMLに末尾のゼロを削除させないようにするために、バージョン番号を引用符で囲むだけで問題を解決できます。これにより、YAMLが浮動小数点数ではなく文字列として扱うようになります。
name: Setup Python 3.10
on:
workflow_dispatch:
jobs:
setup_python_310:
runs-on: ubuntu-20.04
steps:
- name: Setup Python
uses: actions/setup-python@v4
with:
- python-version: 3.10
+ python-version: '3.10'
- name: Display Python version
run: python -c "import sys; print(sys.version)"
この変更により、Pythonバージョンが正しく認識され、設定が予想通りに進行します。