PyInstaller打包rsa2.py为exe出现致命错误,求解决方案
我看到你在用PyInstaller打包rsa2.py成exe时碰到了致命错误,控制台一直提示WARNING lib is not found,很多用到的库都没法被识别,而且试了pyinstaller.exe --onedir --hidden-import FileDialog --debug --noupx rsa2.py这个命令也没解决问题。别着急,给你几个靠谱的解决方案试试:
显式指定所有缺失的依赖库
有时候只加--hidden-import FileDialog远远不够,PyInstaller可能漏识别了其他依赖。你可以先通过pip freeze导出当前环境的所有依赖清单,然后把脚本里用到的所有库都通过--hidden-import逐个添加进去,比如:pyinstaller.exe --onedir --hidden-import FileDialog --hidden-import rsa --hidden-import [其他缺失库名] --debug --noupx rsa2.py更高效的方式是创建一个钩子文件
hook-rsa2.py,在里面批量收集依赖:from PyInstaller.utils.hooks import collect_all # 收集rsa库的所有依赖 datas, binaries, hiddenimports = collect_all('rsa') # 收集FileDialog的依赖 datas, binaries, hiddenimports += collect_all('FileDialog') # 继续添加你用到的其他库打包时加上
--additional-hooks-dir=.参数,让PyInstaller加载这个钩子文件。检查环境兼容性并升级PyInstaller
有时候问题出在Python版本和PyInstaller的适配性上,比如较新的Python 3.11+可能和旧版PyInstaller存在兼容问题。先试试把PyInstaller升级到最新版本:pip install --upgrade pyinstaller另外要确认你是在正确的虚拟环境中执行打包命令,避免依赖库不在当前环境导致的识别失败。
手动复制缺失库到打包目录
如果某些库始终无法被PyInstaller自动识别,你可以找到这些库在Python环境中的安装路径(一般在Lib/site-packages文件夹下),手动把整个库文件夹复制到打包后的dist/rsa2目录里,再运行exe文件测试。用
--collect-all批量收集目标库的所有文件
针对某个核心依赖库(比如你用到的rsa),可以用--collect-all参数让PyInstaller自动收集该库的所有相关文件,避免遗漏:pyinstaller.exe --onedir --collect-all rsa --hidden-import FileDialog --debug --noupx rsa2.py
内容的提问来源于stack exchange,提问作者joe jones

