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

如何在PyInstaller打包Unix可执行文件时正确包含Selenium模块?

解决PyInstaller打包Selenium脚本时的ModuleNotFoundError问题

这个问题源于PyInstaller自动分析依赖时,没能完全识别到Selenium的所有模块(尤其是隐式导入的部分)。以下是具体的spec文件配置方法和额外处理步骤:

1. 生成基础spec文件

如果还没生成过spec文件,先在终端运行:
pyi-makespec your_script.py
这会生成和脚本同名的.spec配置文件。

2. 修改spec文件的hiddenimports字段

打开生成的spec文件,找到Analysis代码块,给hiddenimports添加Selenium相关的核心模块。示例配置如下:

a = Analysis(
    ['your_script.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[
        'selenium',
        'selenium.webdriver',
        'selenium.webdriver.chrome',
        'selenium.webdriver.chrome.service',
        'selenium.webdriver.common.by'
        # 如果你用到了Selenium的其他子模块(比如等待、动作链),可以在这里补充
    ],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
)

如果不想逐个罗列子模块,直接添加'selenium'也可以,PyInstaller会尝试递归收集它的依赖,但显式添加常用模块能避免遗漏。

3. 同步处理ChromeDriverManager的依赖(可选)

因为你用到了ChromeDriverManager,要是打包时出现webdriver_manager相关的模块找不到错误,同样把它加到hiddenimports里:
'webdriver_manager', 'webdriver_manager.chrome', 'webdriver_manager.core'

4. 用修改后的spec文件打包

完成配置后,运行打包命令:
pyinstaller your_script.spec

额外技巧

如果不想手动修改spec文件,也可以直接在打包命令里用--collect-all参数强制收集Selenium和ChromeDriverManager的所有文件:
pyinstaller --collect-all selenium --collect-all webdriver_manager your_script.py
这个命令会自动处理依赖收集,生成的可执行文件通常不会再出现模块缺失问题。

另外要注意:打包时确保激活了和运行脚本相同的Python环境,避免环境不一致导致依赖没被正确识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:45:31