Traffine I/O

日本語

2023-03-03

GitHub ActionsでPython 3.10を設定する方法

はじめに

この記事では、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のワークフローに設定するコードは次のようになります。

.github/workflows/setup-python310.yml
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が浮動小数点数ではなく文字列として扱うようになります。

.github/workflows/setup-python310.yml
  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バージョンが正しく認識され、設定が予想通りに進行します。

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!