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

Spyder中遇webdrivermanager缺失及chromedriver路径报错求助

Chrome WebDriver 路径错误排查

问题情况

  • 在Spyder(基于Anaconda)环境开发时,使用Chrome WebDriver Manager遇到两个连续错误:
    1. 首次运行测试脚本时,触发ModuleNotFoundError: No module named 'webdrivermanager'
    2. 调整后再次运行,出现WebDriverException:'chromedriver' executable needs to be in PATH
  • 已确认终端的PATH环境变量包含/Users/USERNAME/opt/anaconda/pkgs目录(该目录存放webdriver-manager和selenium包),但报错仍未解决

测试代码

import django, selenium, bs4, requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import socket

# There is a 'feature' in selenium which may cause the firewall to react unless you provide an explicit port for the driver
def free_port():
    free_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    free_socket.bind(('localhost', 0))
    free_socket.listen(5)
    port = free_socket.getsockname()[1]
    free_socket.close()
    return port


options = Options()
options.headless = True
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(port=free_port(), options=options)
driver.get('https://www.google.com')
print('Good so far')

报错信息

runfile('/Users/USERNAME/Downloads/sanity.py', wdir='/Users/USERNAME/Downloads')
Traceback (most recent call last):

  File "/Users/USERNAME/opt/anaconda3/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 72, in start
    self.process = subprocess.Popen(cmd, env=self.env,

  File "/Users/USERNAME/opt/anaconda3/lib/python3.8/subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,

  File "/Users/USERNAME/opt/anaconda3/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)

FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver'


During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/Users/USERNAME/Downloads/sanity.py", line 19, in <module>
    driver = webdriver.Chrome(port=free_port(), options=options)

  File "/Users/USERNAME/opt/anaconda3/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
    self.service.start()

  File "/Users/USERNAME/opt/anaconda3/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 81, in start
    raise WebDriverException(

WebDriverException: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

解决步骤

  1. 正确安装webdriver-manager包
    注意包名是webdriver-manager(横杠分隔,不是下划线),在Anaconda环境的终端执行:

    pip install webdriver-manager
    
  2. 修改代码,通过webdriver-manager自动管理驱动
    原代码直接调用webdriver.Chrome()无法自动找到驱动,需要用webdriver-manager提供的路径。修改后的代码如下:

    import django, selenium, bs4, requests
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from webdriver_manager.chrome import ChromeDriverManager  # 新增导入
    import socket
    
    def free_port():
        free_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        free_socket.bind(('localhost', 0))
        free_socket.listen(5)
        port = free_socket.getsockname()[1]
        free_socket.close()
        return port
    
    options = Options()
    options.headless = True
    options.add_argument('--no-sandbox')
    # 自动下载并指定chromedriver路径
    driver = webdriver.Chrome(
        executable_path=ChromeDriverManager().install(),
        port=free_port(),
        options=options
    )
    driver.get('https://www.google.com')
    print('Good so far')
    
  3. 关于PATH目录的误区解释

    • Anaconda的pkgs目录是存放Python包的原始压缩包和安装文件的位置,不包含可执行的chromedriver文件,所以即使PATH包含该目录也无法找到驱动
    • webdriver-manager会自动下载对应版本的chromedriver到系统临时目录,通过executable_path参数直接指定路径是最可靠的方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 00:05:17