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

在Azure Machine Learning流水线安装chromedriver出现路径错误问题求助

问题排查及解决方案

核心原因分析

  • 缺Chrome浏览器本体:你当前只安装了chromedriver驱动,但Selenium依赖Chrome浏览器本体才能运行,Azure ML默认计算环境没有预置Chromium/Chrome浏览器,驱动找不到对应浏览器程序就会抛出路径不存在的错误。
  • 硬编码版本不匹配:你固定下载94版本的chromedriver,如果后续环境中浏览器版本更新,驱动和浏览器版本不兼容也会触发同类报错。
  • 权限&路径失效:Azure ML流水线运行脚本的用户可能和你执行sudo命令的用户不一致,家目录~/指向路径不同,软链接创建后对脚本运行用户不生效,同时也可能存在sudo权限不足导致命令执行失败的情况。
  • 旧参数失效:你代码中使用的chrome_options、executable_path参数在新版Selenium中已被弃用,也可能导致路径读取失败。

修复方案

方案一:使用webdriver-manager自动管理驱动(最稳妥)

这种方式无需手动处理驱动下载、路径配置、版本匹配问题,步骤如下:

  1. 先在脚本头部安装Chrome浏览器本体及依赖:
import os
# 安装Chromium浏览器
os.system('sudo apt update -y')
os.system('sudo apt install -y chromium-browser unzip')
# 安装webdriver-manager
os.system('pip install webdriver-manager selenium')
  1. 替换原有驱动调用代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service

options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('window-size=1920,1080')
options.add_argument('--headless=new')
options.add_experimental_option('w3c', False)

# 自动匹配浏览器版本下载驱动,自动处理路径
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

方案二:手动安装适配(仅需修改原有代码)

如果要保留原有手动安装的逻辑,可做如下修改:

  1. 在安装驱动前先安装Chromium浏览器,参考方案一的apt安装命令。
  2. 安装驱动前添加错误检查,确认下载、解压、移动步骤均执行成功,同时避免使用家目录相对路径,改用绝对路径:
# 改用/tmp临时目录,避免家目录权限问题
os.system('wget -N https://chromedriver.storage.googleapis.com/94.0.4606.61/chromedriver_linux64.zip -P /tmp/')
os.system('unzip /tmp/chromedriver_linux64.zip -d /tmp/')
os.system('chmod +x /tmp/chromedriver')
# 把临时目录加入当前进程的PATH
os.environ["PATH"] += os.pathsep + "/tmp/"
  1. 调用驱动时指定/tmp下的路径即可。

调试步骤

如果修改后仍报错,可在调用驱动前添加如下代码确认环境状态:

print("系统PATH:", os.environ["PATH"])
print("驱动文件是否存在:", os.path.exists("/tmp/chromedriver"))
print("驱动权限:", oct(os.stat("/tmp/chromedriver").st_mode) if os.path.exists("/tmp/chromedriver") else "文件不存在")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:15:06