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

在GitHub Actions中运行Python Poetry单元测试失败求助

问题原因及解决方案

常见原因

  • CI环境未完整安装依赖:本地执行poetry install会安装所有依赖(包括dev依赖),但如果GitHub Actions里执行了poetry install --no-dev,而dateutil是测试所需的依赖(不管是生产依赖还是dev依赖),就会出现找不到模块的错误。
  • Poetry在CI中未正确绑定Python环境:GitHub Actions默认的Python环境可能和Poetry创建的虚拟环境存在版本或路径冲突,导致poetry run没有正确加载虚拟环境内的依赖包。
  • 工作目录不匹配:如果GitHub Actions的工作目录不是项目根目录,poetry run无法找到pyproject.toml,会直接使用系统Python环境而非Poetry的虚拟环境,自然找不到依赖。

修复步骤

  1. 完整安装所有依赖
    在GitHub Actions工作流中,执行不带--no-dev参数的poetry install,确保测试所需的所有依赖都被安装:

    - name: Install dependencies
      run: poetry install
    
  2. 对齐Python版本(可选)
    为避免本地与CI环境的Python版本差异导致依赖安装异常,可在工作流中明确指定Python版本,并让Poetry使用该版本:

    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: "3.10" # 替换为你项目使用的Python版本
    - name: Install Poetry
      run: |
        curl -sSL https://install.python-poetry.org | python3 -
        echo "$HOME/.local/bin" >> $GITHUB_PATH
    - name: Install dependencies
      run: poetry install
    
  3. 确保工作目录为项目根
    默认情况下actions/checkout会将代码拉取到工作目录,若有切换目录的操作,需切回根目录再执行测试:

    - name: Run tests
      run: poetry run python -m unittest discover -s tests/
      working-directory: ./ # 显式指定项目根目录,可选
    
  4. 验证依赖安装状态
    可在CI中添加步骤检查已安装的依赖,确认dateutil是否存在:

    - name: Check installed packages
      run: poetry run pip list
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:46:06