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

使用ChromeDriverManager打包Python脚本为exe时报错,如何解决?

问题解决方法

针对PyInstaller打包--onefile --noconsole后ChromeDriverManager().install()报错的问题,可通过以下几种方式解决:

1. 禁用ChromeDriverManager的日志输出

无控制台模式下,ChromeDriverManager默认的日志输出会触发异常,可直接关闭或降低日志级别:

from webdriver_manager.chrome import ChromeDriverManager
import logging

# 完全禁用webdriver_manager的日志输出
logging.getLogger('WDM').setLevel(logging.NOTSET)

# 或者仅保留错误级别的日志
# logging.getLogger('WDM').setLevel(logging.ERROR)

# 初始化时指定日志级别
service = Service(ChromeDriverManager(log_level=logging.NOTSET).install())

2. 手动指定ChromeDriverManager的缓存目录

单文件打包后,PyInstaller会将文件解压到系统临时目录,可能导致缓存路径访问异常。手动指定一个有读写权限的固定目录:

from pathlib import Path
from webdriver_manager.chrome import ChromeDriverManager

# 用用户文档目录作为缓存路径,避免权限问题
cache_dir = str(Path.home() / "Documents" / "chromedriver_cache")
service = Service(ChromeDriverManager(cache_dir=cache_dir).install())

3. 提前下载chromedriver并打包进程序

跳过在线下载步骤,手动下载对应版本的chromedriver.exe,打包时一起包含:

  1. 下载与本地Brave浏览器版本匹配的chromedriver,放到脚本同目录
  2. 修改代码获取打包后的文件路径:
import sys
import os
from selenium.webdriver.chrome.service import Service

def get_resource_path(relative_path):
    try:
        # PyInstaller打包后的临时解压目录
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

# 直接使用本地打包的chromedriver
driver_path = get_resource_path("chromedriver.exe")
service = Service(driver_path)
  1. 执行打包命令(Windows环境):
pyinstaller --onefile --noconsole --add-data "chromedriver.exe;." main.py

4. 临时启用控制台排查具体错误

若以上方法无效,先去掉--noconsole参数打包,运行exe查看控制台输出的详细错误信息,再针对性处理:

pyinstaller --onefile main.py

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:57:03