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

如何在GitHub Actions工作流中跨步骤激活Python虚拟环境?

问题原因

GitHub Actions的每个run步骤都是独立的PowerShell会话,激活虚拟环境的操作(Activate.ps1)只会修改当前会话的环境变量,切换到下一个步骤后,会话重置,环境变量也会恢复原状,因此找不到python命令。

解决方案

有两种常用方式可以让虚拟环境在所有步骤中生效:

方式一:直接调用虚拟环境内的Python/Pip绝对路径

无需依赖环境变量,直接指定虚拟环境中python和pip的完整路径,每个步骤都能直接使用:

- name: Set up Python ${{ inputs.python-version }}
  run: |
    py -${{ inputs.python-version }} -m venv .\venv
    .\venv\Scripts\python.exe -m pip install --upgrade pip
    .\venv\Scripts\python.exe -m pip install tox
- name: Install dependencies
  run: |
    .\venv\Scripts\python.exe -m pip install --upgrade pip
    .\venv\Scripts\python.exe -m pip install tox

方式二:将虚拟环境路径写入全局环境变量

激活虚拟环境后,把更新后的PATH环境变量写入GITHUB_ENV,让后续步骤继承这个PATH,就能直接使用python命令:

- name: Set up Python ${{ inputs.python-version }}
  run: |
    py -${{ inputs.python-version }} -m venv .\venv
    # 激活虚拟环境
    & .\venv\Scripts\Activate.ps1
    # 将包含虚拟环境Scripts目录的PATH写入全局环境变量
    echo "PATH=$env:PATH" >> $env:GITHUB_ENV
    # 当前步骤正常使用python命令
    python -m pip install --upgrade pip
    python -m pip install tox
- name: Install dependencies
  run: |
    # 后续步骤直接使用python命令即可
    python -m pip install --upgrade pip
    python -m pip install tox

也可以手动构建PATH,跳过激活环境的步骤:

- name: Set up Python ${{ inputs.python-version }}
  run: |
    py -${{ inputs.python-version }} -m venv .\venv
    # 获取虚拟环境Scripts目录的绝对路径
    $venvScriptsPath = (Resolve-Path .\venv\Scripts).Path
    # 将该路径加到PATH最前面,写入全局环境变量
    echo "PATH=$venvScriptsPath;$env:PATH" >> $env:GITHUB_ENV
    # 当前步骤使用绝对路径或后续步骤直接用python
    .\venv\Scripts\python.exe -m pip install --upgrade pip
    .\venv\Scripts\python.exe -m pip install tox
- name: Install dependencies
  run: |
    python -m pip install --upgrade pip
    python -m pip install tox

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:03:32