You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置GitHub Actions仅在Python 3.6及以上版本执行任务?

解决GitHub Actions构建矩阵中Python版本判断问题

问题分析

你的构建矩阵混合了数字类型(如2.7、3.5)、字符串补丁版本(如'3.9.1')和主版本标识(3,对应最新Python 3.x),直接用matrix.python-version >= 3.6会因类型不统一导致判断失效,且硬编码特定版本的写法扩展性差,新增版本时需手动修改条件。

优化方案

通过实际获取安装后的Python版本进行判断,避免依赖矩阵中版本的格式。具体步骤如下:

  1. 添加一个步骤,提取Python的主版本+次版本(如3.6、3.9),并判断是否满足>=3.6的要求,将结果存入输出变量;
  2. 后续安装依赖的步骤根据该输出变量决定是否执行。

修改后的完整配置

jobs:
  run-tests:
    name: Run tests
    runs-on: ubuntu-latest
    defaults:
      run:
        shell: bash -l {0}
    strategy:
      matrix:
        python-version: [2.7, 3.5, 3.6, '3.9.1', 3]
      fail-fast: false
    steps:
      - uses: actions/checkout@v2
      - uses: conda-incubator/setup-miniconda@v2
        with:
          auto-update-conda: true
          python-version: ${{ matrix.python-version }}
      - name: 判断是否需要安装3.6+依赖
        id: check-python-version
        run: |
          # 获取Python主版本和次版本,格式如3.6、3.9
          PY_MAJOR_MINOR=$(python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
          # 比较版本是否>=3.6,输出判断结果
          if (( $(echo "$PY_MAJOR_MINOR >= 3.6" | bc -l) )); then
            echo "needs_deps=true" >> $GITHUB_OUTPUT
          else
            echo "needs_deps=false" >> $GITHUB_OUTPUT
          fi
      - name: Install testing dependencies (Python 3.6+)
        if: ${{ steps.check-python-version.outputs.needs_deps == 'true' }}
        run: |
          conda install -c anaconda -c conda-forge --file requirements-linting-old.txt libstdcxx-ng

方案优势

  • 兼容性强:不管矩阵中版本是数字、字符串还是主版本标识,都基于实际安装的Python版本判断,避免格式问题;
  • 扩展性好:新增Python 3.10、3.11等版本时,无需修改判断条件,自动适配;
  • 逻辑清晰:将版本判断逻辑独立成步骤,配置结构更易读维护。

内容的提问来源于stack exchange,提问作者j13r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:24:49