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

CircleCI运行Python测试时报pytest: command not found错误

CircleCI运行Selenium项目提示pytest: command not found 解决方案

核心原因

报错本质是Shell无法在当前环境的PATH路径列表中找到pytest可执行文件,触发127退出码。你配置中使用pip install pytest --user是直接诱因:CircleCI官方Python镜像默认以root用户运行,--user参数会将pytest安装到/root/.local/bin目录下,该目录默认不在环境变量PATH中,因此安装完成后依然无法直接调用pytest命令。

另外你的现有配置存在两处冗余问题,会干扰依赖安装逻辑:

  • 重复执行pytest安装操作,既手动跑了pip install,又调用了python orb的install-packages步骤
  • 没有自动读取项目根目录下已经声明好依赖的requirements.txt,单独安装pytest容易出现版本、路径不一致问题

修复步骤

  • 移除所有安装命令中的--user参数,容器环境下直接全局安装pip包即可,安装后的可执行文件会自动进入系统PATH。
  • 删掉单独手动安装pytest的run步骤,直接通过python orb的install-packages命令自动读取requirements.txt安装全量依赖,包含你声明的pytest、selenium等包。
  • 调用pytest时优先使用python -m pytest格式,该方式会直接调用当前Python环境中安装的pytest模块,完全绕过PATH查找逻辑,是CI环境下最稳妥的调用方式,不会出现命令找不到的问题。

修正后的config.yml参考

version: 2.1

orbs:
  python: circleci/python@2.0.3


jobs:
  example-job:
    docker:
      - image: circleci/python:3.6.1
    steps:
      - checkout
      # 自动读取requirements.txt安装所有依赖,默认开启pip缓存加速构建
      - python/install-packages:
          pkg-manager: pip
      # 用模块方式调用pytest,彻底规避PATH异常
      - run: 
          command: python -m pytest businessObjects/test_Login.py


workflows:
    example-workflow:
      jobs:
        - example-job

调试方法

如果调整后依然有异常,可以在安装依赖步骤后增加一行调试命令,确认pytest安装状态:

- run: pip list | grep pytest

执行后如果输出中能看到pytest对应的版本号,说明依赖安装成功,此时用python -m pytest调用必然可以正常运行。

如果你一定要用直接输入pytest的调用方式,可以在安装依赖前先把用户目录的bin路径加入PATH,在steps最前面加一行配置即可:

- run: echo 'export PATH=/root/.local/bin:$PATH' >> $BASH_ENV

但这种方式需要额外维护环境变量,优先推荐用python -m pytest的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:01:46