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

使用cx_Freeze打包Selenium爬虫转Sheets项目为.exe文件时出现异常错误求助

解决cx_Freeze打包Selenium+gspread项目为.exe时的运行异常问题

咱们一步步来排查可能导致exe运行报错的常见问题,这些都是我处理类似打包项目时踩过的坑:

1. ChromeDriver 路径与自动下载问题

你用了webdriver_manager自动安装ChromeDriver,但打包成exe后,这个工具在独立环境里经常会因为网络、权限或者路径识别问题失效。最稳妥的办法是预先下载对应版本的ChromeDriver:

  • 下载和你本地Chrome版本匹配的ChromeDriver,放到项目根目录;
  • 修改main.py里的驱动初始化代码,直接指定本地驱动路径:
# 替换原来的webdriver_manager相关代码
from selenium.webdriver.chrome.service import Service
import os

# 获取当前程序运行的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))
driver_path = os.path.join(current_dir, "chromedriver.exe")
driver = webdriver.Chrome(service=Service(driver_path), options=options)
  • 同时更新setup.py的include_files,把ChromeDriver加进去:
build_exe_options = {
    "packages": ['gspread', 'oauth2client.service_account', 'selenium'],
    "include_files": ['Dates.txt', 'credentials.json', 'chromedriver.exe']
}

2. 打包时的依赖遗漏

cx_Freeze自动检测依赖有时候会漏掉一些隐性模块,比如oauth2client的子模块、datetime或者json这类基础库。可以把这些明确加到packages里:

"packages": ['gspread', 'oauth2client', 'selenium', 'datetime', 'json', 'os'],

3. 文件路径识别错误

打包后exe的工作目录可能和你开发时不一样,直接用相对路径读取credentials.json和Dates.txt很容易找不到文件。修改main.py里的文件读取逻辑,用绝对路径:

import os

current_dir = os.path.dirname(os.path.abspath(__file__))
# 读取credentials.json
creds_path = os.path.join(current_dir, "credentials.json")
creds = ServiceAccountCredentials.from_json_keyfile_name(creds_path, scope)

# 读写Dates.txt
dates_path = os.path.join(current_dir, 'Dates.txt')
with open(dates_path, 'a+') as dates:
    dates.seek(0)
    # 后续逻辑保持不变

4. Headless模式兼容性问题

旧版的options.headless = True在某些环境下会有渲染异常,建议换成Chrome的新Headless模式:

options = ChromeOptions()
options.add_argument("--headless=new")  # 替代旧的headless设置

如果还是有问题,可以先临时注释掉Headless选项,测试exe是否能正常启动浏览器,以此排除渲染层面的问题。

5. 权限问题

有时候exe运行时因为要写入Dates.txt或者访问网络,需要管理员权限。右键点击生成的exe,选择「以管理员身份运行」试试,看是否能解决报错。

你可以按照上面的顺序逐一排查,先从ChromeDriver和文件路径这两个最常见的问题入手,应该能解决大部分异常~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:07:47