Jenkins执行Python脚本遇No Module named错误的解决求助
解决Jenkins中Python脚本依赖缺失的问题
这问题我之前踩过坑!核心原因很简单:Jenkins执行脚本时用的Python环境,和你本地开发的虚拟环境完全独立,里面没装jenkinsapi和jenkins这两个依赖包。给你几个实用的解决办法,按需求选就行:
直接在Shell步骤中临时安装依赖
最简单的方式,就是在运行脚本的命令前,先通过pip安装需要的包。注意如果Jenkins服务器用的是Python3,要把pip换成pip3:# 全局安装(如果有权限的话) pip install jenkinsapi jenkins python script_2_name.py要是碰到权限问题(比如普通用户无法全局安装),可以加
--user参数安装到当前用户的目录下:pip install --user jenkinsapi jenkins python script_2_name.py用虚拟环境隔离依赖(推荐)
这种方式不会污染Jenkins服务器的全局Python环境,和你本地的开发方式保持一致,更干净可靠:# 创建虚拟环境(Python3请用 python3 -m venv jenkins_venv) python -m venv jenkins_venv # 激活虚拟环境(Linux/macOS用这条,Windows的话是 jenkins_venv\Scripts\activate) source jenkins_venv/bin/activate # 安装所需依赖 pip install jenkinsapi jenkins # 运行你的脚本 python script_2_name.py # 脚本跑完后可以退出虚拟环境(Jenkins会话结束后会自动清理,这步可选) deactivate用requirements.txt统一管理依赖(规范做法)
如果你的项目后续可能增加更多依赖,建议用requirements.txt来统一管理。先在项目根目录创建这个文件,内容如下:jenkinsapi jenkins然后在Jenkins的Shell步骤中执行以下命令:
pip install -r requirements.txt python script_2_name.py同样可以搭配
--user参数或者虚拟环境使用,根据实际情况调整。
另外要注意:先确认Jenkins用的Python版本和你本地一致!有时候Jenkins里的python指向Python2,而你本地用的是Python3,这时候要把命令里的python换成python3、pip换成pip3,避免版本不兼容导致的安装失败。可以在Shell步骤里先跑python --version确认一下。
内容的提问来源于stack exchange,提问作者Arun Dharuman
相关产品推荐
相关产品推荐

