jenkins容器默认不带python和pip,需手动安装python3及pip3并配置path;pipeline中应使用pip3 install --user -r requirements.txt配合export path=$home/.local/bin:$path调用。

pip 命令在 Jenkins 容器里根本找不到
直接在 Jenkins Pipeline 的 sh 步骤里写 pip install,大概率会报错:/bin/sh: pip: not found。这不是 Jenkins 配置问题,而是 Jenkins 官方镜像(比如 jenkins/jenkins:lts)默认不带 Python,更没有 pip。你得自己装,而且得装进容器运行时的环境里,不是宿主机装了就行。
在 Jenkins 容器中安装 pip3 的实操路径
最稳妥的方式是进入正在运行的 Jenkins 容器内部,手动安装 Python 3 和 pip3。前提是你的 Jenkins 是用 Docker 启动的,且容器有 root 权限(绝大多数情况如此)。
操作步骤如下:
- 确认容器名或 ID:
docker ps | grep jenkins - 进入容器:
docker exec -u 0 -it <container_name> /bin/bash</container_name>(-u 0确保以 root 运行) - 更新包管理器并安装 Python3 及 pip3:
apt update && apt install -y python3 python3-pip(适用于 Debian/Ubuntu 基础镜像) - 验证安装:
python3 --version和pip3 --version应该都能正常输出 - 可选:加软链接方便脚本统一调用:
ln -s /usr/bin/python3 /usr/bin/python、ln -s /usr/bin/pip3 /usr/bin/pip
注意:如果 Jenkins 是用 RPM 或二进制方式部署在宿主机上(非 Docker),那就要在宿主机系统里装 Python3 和 pip3,并确保 Jenkins 进程能读取到对应 PATH(比如把 /usr/bin 加进 Jenkins 服务的环境变量)。
Pipeline 中安全调用 pip3 的写法
即使 pip3 已就位,也不建议裸写 pip3 install xxx —— 缺少依赖隔离、版本冲突、权限问题都可能让构建失败。
跨40多个平台查询和管理营销数据——Google Analytics、Google Ads、Facebook Ads、Instagram、Shopify、HubSpot、Klaviyo、TikTok、LinkedIn等。
推荐做法是结合 requirements.txt 和用户级安装:
- 确保项目根目录下有
requirements.txt(可用pip3 freeze > requirements.txt生成) - 在 Jenkinsfile 的
sh步骤中使用:pip3 install --user -r requirements.txt -
--user参数避免权限错误,把包装到当前用户(即 Jenkins 用户)的家目录下(如~/.local/bin) - 记得把
~/.local/bin加入 PATH:export PATH=$HOME/.local/bin:$PATH,否则后续命令可能找不到刚装的 CLI 工具(如pytest、allure)
示例片段:
sh ''' export PATH=$HOME/.local/bin:$PATH pip3 install --user -r requirements.txt pytest --version '''
为什么不用虚拟环境?以及它的代价
有人会说“应该用 venv 隔离环境”。技术上可行,但 Jenkins 默认工作空间(workspace)是每次构建独享的,venv 每次重建开销大、缓存难做,反而拖慢构建速度。
真正需要隔离的场景是:多个项目共用一个 Jenkins 节点,且依赖冲突严重。这时更合理的解法是:
- 用 Docker Agent,每个 Pipeline 拉起一个带完整 Python 环境的临时容器(轻量、干净、可复现)
- 或为不同项目配置不同的 Jenkins Agent 节点,各自预装所需 Python 版本和包
直接在主 Jenkins 容器里反复创建/销毁 venv,既没解决共享问题,又增加了磁盘 I/O 和构建时间——容易被忽略,但实际影响明显。










