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

GitLab CI/CD中python:safety任务因py和wheel版本问题失败的解决咨询

GitLab CI/CD中Safety安全检查的py和wheel版本问题解决方案

问题场景

在GitLab CI/CD配置了safety安全漏洞检查任务,使用版本2.3.2的工具,.gitlab-ci.yml配置如下:

python:safety:
  extends: .python:project-image
  stage: test
  script:
    - pip install safety==2.3.2
    - safety check
      --ignore 44715

执行后任务因py==1.11.0(已安装该包最新版)和wheel==0.37.1存在安全漏洞失败,且不清楚wheel的安装来源,需要除忽略漏洞ID或设置allow_failure之外的解决方法。

可行解决办法

1. 显式更新wheel到安全版本

在CI脚本中手动指定安装符合安全要求的wheel版本,覆盖原有版本,把这一步放在safety安装之前:

python:safety:
  extends: .python:project-image
  stage: test
  script:
    - pip install wheel>=0.38.0
    - pip install safety==2.3.2
    - safety check
      --ignore 44715

2. 排查wheel的安装来源

通过命令查看wheel的安装详情,确认是基础镜像自带还是依赖包间接安装的:

pip show wheel

如果是基础镜像自带的旧版本,建议更新.python:project-image使用的基础Python镜像,选择自带更高版本wheel的官方镜像(比如Python 3.8及以上的新版本镜像通常自带更新的wheel)。

3. 用虚拟环境隔离依赖环境

在CI中创建干净的虚拟环境,避免基础镜像自带的旧包干扰,确保所有依赖都是按需安装的安全版本:

python:safety:
  extends: .python:project-image
  stage: test
  script:
    - python -m venv venv
    - source venv/bin/activate
    - pip install --upgrade pip wheel>=0.38.0
    - pip install -r requirements.txt
    - pip install safety==2.3.2
    - safety check
      --ignore 44715

4. 处理py包的漏洞(该包已停止维护)

py==1.11.0是该包的最终版本,项目若间接依赖它(比如通过pytest),可以升级到最新版pytest,新版pytest已不再依赖py包;若项目直接依赖py,建议移除它,改用Python标准库中的等效功能替代。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:45:28