Win11 WSL2环境Chromedriver已加PATH仍报错需在PATH的问题
问题根因
所有报错本质是WSL2环境和Windows宿主环境的运行边界没有理清:
- 你下载的
chromedriver_win32压缩包内的chromedriver.exe是Windows专属可执行文件,WSL2是Linux运行环境,无法直接原生识别运行该格式文件,即便开启WSL的Windows程序互操作功能,跨环境路径解析、权限逻辑也很容易出异常 - 你添加的
\\wsl.localhost\Ubuntu\home\my_username\chromedriver_win32\是Windows系统下的UNC网络路径,如果你是在WSL终端内执行Python命令,WSL维护独立的PATH环境变量,不会读取Windows侧手动添加的该路径配置 - 之前尝试调用
google-chrome触发KeyError,是因为WSL环境默认没有安装Linux版本的Chrome/Chromium浏览器,程序找不到对应程序入口。
解决方案(二选一即可)
方案一:全栈使用WSL2 Linux环境运行(稳定性最高)
- 第一步,在WSL2终端直接执行命令安装软件源内自带的Chromium和版本匹配的对应驱动:
sudo apt update && sudo apt install -y chromium-browser chromium-chromedriver
- 第二步,安装完成后执行验证命令,确认驱动正常被系统识别:
chromedriver --version
命令正常返回版本号即代表驱动路径已经自动加入WSL的PATH,无需手动配置。
- 第三步,直接运行原有脚本即可。如果WSL2没有配置图形界面转发,需要给Chrome加无头启动参数,修改测试代码为:
from selenium import webdriver from selenium.webdriver.chrome.options import Options opts = Options() opts.add_argument("--headless=new") opts.add_argument("--no-sandbox") opts.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(options=opts) website = "https://www.adamchoi.co.uk/overs/detailed" driver.get(website)
即可正常无界面完成爬取操作。
方案二:全栈使用Windows环境运行(可直接唤起桌面Chrome看到操作过程)
- 第一步,退出WSL终端,打开Windows自带的PowerShell或命令提示符
- 第二步,将之前下载的
chromedriver.exe移动到纯Windows本地路径下,例如C:\webdrivers\,不要存放在WSL的网络映射目录中 - 第三步,将
C:\webdrivers\添加到Windows系统的PATH环境变量中,添加完成后重启所有终端窗口让配置生效 - 第四步,在PowerShell中执行
chromedriver.exe --version,能正常返回版本号即配置成功,切到脚本所在目录执行python scraper.py即可正常运行。
额外避坑提示
- 不要跨环境混用程序和路径:不要在WSL里调用存放在WSL文件系统内的exe程序,也不要把Windows的UNC路径加入WSL的PATH变量,跨文件系统的权限、路径转义问题会触发很多无意义的报错
- 4.6及以上版本的Selenium自带驱动自动管理功能,只要本地安装了对应版本的Chrome浏览器,不需要手动下载chromedriver,执行
pip install --upgrade selenium升级到最新版即可省掉手动匹配驱动版本、配置路径的步骤。
内容的提问来源于stack exchange,提问作者p.habermanm
相关产品推荐
相关产品推荐

