树莓派环境下Python Selenium适配Chromium驱动失败问题求助
解决树莓派上Chromium与Selenium驱动不兼容的问题
这个OSError: [Errno 8] Exec format error错误本质是你下载的chromedriver是针对x86架构(PC版Chrome)编译的,而树莓派是ARM架构,两者二进制格式不匹配导致的。针对你的Chromium 98.0.4758.106版本,这里有几个靠谱的解决方案:
方案1:通过系统包管理器安装适配的驱动(最推荐)
树莓派的官方软件源里已经包含了和系统自带Chromium版本完全匹配的chromedriver,直接用apt安装即可:
- 更新软件源索引:
sudo apt update - 安装对应驱动:
sudo apt install chromium-chromedriver - 修改你的Python代码,使用系统默认的驱动路径,并指定Chromium的二进制文件位置:
import requests from selenium import webdriver from selenium.webdriver.chrome.service import Service session_requests = requests.session() # 系统安装的chromedriver路径 ser = Service("/usr/lib/chromium-browser/chromedriver") op = webdriver.ChromeOptions() # 指定Chromium的执行文件位置,避免驱动误找Chrome op.binary_location = "/usr/bin/chromium-browser" # 如果你是在无桌面环境下运行树莓派,建议添加以下无头模式参数 # op.add_argument("--headless") # op.add_argument("--no-sandbox") # op.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(service=ser, options=op)
这种方式能保证驱动和Chromium版本完全同步,不会出现兼容性问题,而且维护起来最省心。
方案2:手动下载ARM架构的对应版本chromedriver
如果因为某些原因无法使用apt安装(比如需要特定版本),可以手动下载适配ARM架构的chromedriver:
- 找到对应你Chromium版本(98.0.4758.106)的ARM版chromedriver(注意要选ARM32或ARM64,根据你的树莓派系统架构)
- 将下载的压缩包解压到树莓派的某个目录,比如
/home/pi/Downloads/ - 给驱动文件添加执行权限:
chmod +x /home/pi/Downloads/chromedriver - 同样在代码里指定Chromium的二进制位置,并使用这个手动下载的驱动路径即可。
为什么不推荐使用Chrome的workaround?
树莓派的硬件更适合轻量的Chromium,Chrome的ARM版本不仅资源占用高,而且并非官方长期支持的版本,后续可能出现更多兼容性问题,完全没必要舍近求远。
内容的提问来源于stack exchange,提问作者DGBMenno
相关产品推荐
相关产品推荐

