将.py转为.exe后遇ModuleNotFoundError: no module named 'selenium'求助
解决方法
一、先修复依赖安装报错问题
创建并激活Windows专属虚拟环境
避免全局Python环境混乱,先隔离出适配Windows Python 3.12的环境:# 创建虚拟环境 python -m venv venv # cmd中激活 venv\Scripts\activate.bat # PowerShell中激活(需先允许脚本执行:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser) venv\Scripts\Activate.ps1解决cx_freeze安装失败问题
cx_freeze安装需要编译依赖,需先安装Microsoft Visual C++ Build Tools:- 下载安装包后,勾选「Desktop development with C++」组件(包含MSVC编译器、Windows SDK等),完成安装后重启终端。
- 回到激活的虚拟环境,重新执行:
pip install cx_freeze
重新生成适配Windows的依赖清单
不要直接用Ubuntu导出的requirements.txt,在Windows虚拟环境中安装所需包后重新生成:# 先安装核心依赖 pip install selenium # 按需安装其他打包工具(如pyinstaller、webdriver-manager) pip install pyinstaller webdriver-manager # 生成适配当前环境的requirements.txt pip freeze > requirements.txt
二、解决PyInstaller打包时找不到selenium的问题
在虚拟环境内执行打包
确保PyInstaller读取的是当前虚拟环境的包,执行:pyinstaller --onefile webScrapingTool.py强制收集selenium所有模块
若仍报ModuleNotFoundError,用--collect-all参数强制收集selenium的全部依赖(selenium存在大量动态导入模块,hiddenimports可能覆盖不全):pyinstaller --onefile --collect-all selenium webScrapingTool.py优化webdriver管理(可选但推荐)
避免打包后需手动放置浏览器驱动,改用webdriver-manager自动适配版本:- 先安装:
pip install webdriver-manager - 修改脚本中的webdriver初始化代码:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # 自动下载并匹配对应版本的chromedriver driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
- 先安装:
关键注意事项
- 禁止跨系统打包:Ubuntu上生成的exe无法在Windows运行,必须在Windows系统上用对应版本的Python环境打包。
- 始终在虚拟环境中操作:避免不同版本包的冲突,保证打包环境的纯净性。
内容的提问来源于stack exchange,提问作者stand-twilight-nag
相关产品推荐
相关产品推荐

