Jenkins执行Python脚本报错:找不到指定文件,求解决方案
尝试通过Jenkins文件传递参数执行Python脚本,但触发任务时出现错误:
can't open file '/Users/--/---/--/---/--/Update.py ': [Errno 2] No such file or directory相关Jenkins代码片段:
def overrideJson = sh(returnStdout: true, script: "python3 /Users/anuj/---/--/---/--/Update.py input1 input2 ")
排查与解决方案
核对文件真实路径
错误信息中的路径用--替代了实际目录,先在Jenkins代理机器上执行ls /Users/anuj/---/--/---/--/Update.py,确认文件确实存在。注意目录/文件名的大小写(Linux代理区分大小写,MacOS默认不区分但需保持一致),以及是否包含特殊字符。移除命令末尾的多余空格
代码中脚本命令的末尾存在多余空格,可能导致路径解析异常,修改为:def overrideJson = sh(returnStdout: true, script: "python3 /Users/anuj/---/--/---/--/Update.py input1 input2")检查Jenkins用户权限
确认执行Jenkins任务的用户拥有该文件及父目录的读取权限。执行ls -l /Users/anuj/---/--/---/--/Update.py查看权限配置,若权限不足,可通过chmod +r /Users/anuj/---/--/---/--/Update.py添加读权限。MacOS环境下还需检查是否开启了磁盘访问隐私限制。改用相对路径或先切换目录
如果脚本位于Jenkins工作目录内,使用相对路径更稳定;若不在工作目录,可先切换到脚本所在路径再执行:def overrideJson = sh(returnStdout: true, script: "cd /Users/anuj/---/--/---/--/ && python3 Update.py input1 input2")指定Python3绝对路径
避免Jenkins代理环境的python3命令指向错误,改用Python解释器的绝对路径(比如/usr/bin/python3):def overrideJson = sh(returnStdout: true, script: "/usr/bin/python3 /Users/anuj/---/--/---/--/Update.py input1 input2")
内容的提问来源于stack exchange,提问作者Anuj Sharma

