使用PyInstaller打包含Selenium的Python脚本后EXE无法运行求助
解决PyInstaller打包Selenium脚本后无法运行的问题
核心原因
单文件模式下,PyInstaller会将所有依赖解压到系统临时目录(而非exe所在目录),脚本里写的相对路径./driver/geckodriver.exe无法找到实际的驱动文件。
解决方案
1. 修改Python脚本,适配打包后的路径
更新tdistrib_comp.py代码,自动识别开发环境和打包后的运行环境,获取正确的驱动路径:
# -*- coding: utf-8 -*- import sys import os from selenium import webdriver # 判断是否为打包后的运行环境 if getattr(sys, 'frozen', False): # 打包后,依赖文件会被解压到sys._MEIPASS指向的临时目录 base_dir = sys._MEIPASS else: # 开发环境下,取当前脚本所在目录 base_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接geckodriver的绝对路径 driver_path = os.path.join(base_dir, 'driver', 'geckodriver.exe') browser = webdriver.Firefox(executable_path=driver_path)
2. 调整PyInstaller打包命令
确保--add-binary参数的目标路径正确,命令如下:
pyinstaller --onefile .\tdistrib_comp.py --add-binary "driver\geckodriver.exe;driver"
说明:
--add-binary的格式是源文件;目标目录,这里会把driver\geckodriver.exe打包后放到临时目录的driver子文件夹下,和脚本里的路径对应。
3. 排查额外问题
- 驱动与浏览器版本匹配:确认geckodriver的版本和本地安装的Firefox版本一致,版本不兼容会导致启动失败。
- 查看具体报错:不要双击exe运行,而是打开命令提示符(CMD),切换到exe所在目录后执行exe文件,这样能看到详细的错误提示,方便定位问题。
内容的提问来源于stack exchange,提问作者Christophe C.
相关产品推荐
相关产品推荐

