在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自动管理驱动(最稳妥)
这种方式无需手动处理驱动下载、路径配置、版本匹配问题,步骤如下:
- 先在脚本头部安装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')
- 替换原有驱动调用代码:
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)
方案二:手动安装适配(仅需修改原有代码)
如果要保留原有手动安装的逻辑,可做如下修改:
- 在安装驱动前先安装Chromium浏览器,参考方案一的apt安装命令。
- 安装驱动前添加错误检查,确认下载、解压、移动步骤均执行成功,同时避免使用家目录相对路径,改用绝对路径:
# 改用/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/"
- 调用驱动时指定/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
相关产品推荐
相关产品推荐

