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

GitHub Actions中CMake无法识别Python虚拟环境的问题求助

GitHub Actions中CMake无法识别虚拟环境的解决方案

问题本质

激活虚拟环境后,当前Shell的PATH已包含虚拟环境的Python路径,直接执行Python脚本能正常调用虚拟环境中的解释器与依赖。但CMake默认的Python查找逻辑会优先扫描系统路径,而非继承当前Shell的环境变量,导致调用Python脚本时找不到虚拟环境内安装的jinja2等依赖。

解决方法

1. 显式指定CMake使用的Python解释器路径

在运行CMake时,通过-DPython_EXECUTABLE参数直接指向虚拟环境中的Python可执行文件,强制CMake使用虚拟环境:

cmake .. -DPython_EXECUTABLE="./venv/bin/python"

Windows环境下路径为./venv/Scripts/python.exe,需根据Runner系统调整。

2. 确保虚拟环境变量与CMake在同一Shell进程中

GitHub Actions中,若将虚拟环境激活与CMake执行拆分到不同Step,环境变量不会被继承。需将两个操作放在同一个run块内,保证共享Shell环境:

- name: Build with CMake
  run: |
    source venv/bin/activate
    mkdir -p build && cd build
    cmake .. -DPython_EXECUTABLE="../venv/bin/python"
    make

3. 缓存虚拟环境时固定路径

缓存虚拟环境时,需保证每次创建的虚拟环境路径完全一致,避免缓存恢复后Python路径变更:

- name: Cache virtual environment
  uses: actions/cache@v3
  id: cache-venv
  with:
    path: ./venv
    key: ${{ runner.os }}-venv-${{ hashFiles('requirements.txt') }}

修正后的配置示例

Workflow片段

- name: Set up Python
  uses: actions/setup-python@v5
  with:
    python-version: '3.10'

- name: Cache virtual environment
  uses: actions/cache@v3
  id: cache-venv
  with:
    path: ./venv
    key: ${{ runner.os }}-venv-${{ hashFiles('requirements.txt') }}

- name: Create virtual environment
  if: steps.cache-venv.outputs.cache-hit != 'true'
  run: |
    python -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt

- name: Build with CMake
  run: |
    source venv/bin/activate
    mkdir -p build && cd build
    cmake .. -DPython_EXECUTABLE="../venv/bin/python"
    make

CMakeLists.txt片段

find_package(Python REQUIRED)
execute_process(
  COMMAND ${Python_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/generate_code.py
  RESULT_VARIABLE PY_SCRIPT_RESULT
)
if(NOT PY_SCRIPT_RESULT EQUAL 0)
  message(FATAL_ERROR "Python script execution failed")
endif()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:57:08