使用PyInstaller打包exe时出现No module named 'pyautogui'错误求助
解决PyInstaller打包exe时缺失pyautogui模块的问题
第一步:确保虚拟环境干净且依赖正确
- 删除之前打包生成的
build、dist文件夹和main.spec文件,避免缓存干扰 - 重新创建并激活虚拟环境,只安装项目必须的依赖:
(如果pip install pyinstaller pyautoguimain.py还用到其他库,仅安装必要的,不要冗余安装) - 先在虚拟环境里运行
python main.py,确认代码能正常执行,排除代码本身的依赖问题
第二步:用spec文件手动配置依赖(比命令行参数更可靠)
- 生成spec文件:
pyi-makespec --onefile --noconsole main.py - 打开生成的
main.spec文件,找到hiddenimports行,修改为:
(pyautogui依赖这些子模块,PyInstaller自动扫描时经常漏检)hiddenimports=['pyautogui', 'pyscreeze', 'pygetwindow', 'mouseinfo', 'pyrect', 'pymsgbox'], - 用spec文件打包:
pyinstaller main.spec
第三步:如果还是不行,强制收集pyautogui的所有文件
- 方法一:用
--collect-all参数打包:pyinstaller --onefile --noconsole --collect-all pyautogui main.py - 方法二:在spec文件里添加收集逻辑:
在spec文件开头导入:
然后在from PyInstaller.utils.hooks import collect_alldatas后添加:
再运行datas += collect_all('pyautogui')[0],pyinstaller main.spec
额外注意事项
- 打包前确认终端已激活虚拟环境:Windows看命令行开头的
(venv)标识,Linux/mac看提示符,或用where python(Windows)/which python(Linux/mac)检查Python路径是否指向虚拟环境 - 体积优化:虚拟环境只装必要依赖是核心,还可加
--clean参数清理PyInstaller缓存;尝试用UPX压缩(先安装UPX,打包时加--upx-dir <UPX路径>),但部分库可能不兼容UPX,需测试
内容的提问来源于stack exchange,提问作者Deniz
相关产品推荐
相关产品推荐

