使用PyInstaller打包PyQt应用时触发AssertionError问题求助
解决PyInstaller打包PyQt5应用时的AssertionError问题
步骤1:清理重复依赖包
这个断言错误的核心原因是PyInstaller检测到某个模块被多个Python发行版包同时包含,无法确定依赖归属。先清理可能重复安装的相关库:
- 卸载冲突包后重新安装,执行以下命令:
pip uninstall -y lxml python-docx PyQt5 sip pip install lxml python-docx PyQt5 sip
步骤2:调整打包命令
打包时手动指定sip为隐藏导入,同时禁用PyInstaller的依赖分发检测,绕过断言错误:
pyinstaller --onefile --hidden-import=sip --disable-dependency-resolution app.py
步骤3:修改spec文件(命令行无效时用)
如果上述命令没解决问题,打开生成的app.spec文件,修改Analysis部分,添加隐藏导入并关闭依赖解析:
a = Analysis( ['app.py'], pathex=['C:\\Users\\m14\\Desktop\\PythonApp'], binaries=[], datas=[], hiddenimports=['sip'], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=None, noarchive=False, disable_dependency_resolution=True # 新增此行关闭依赖解析 )
然后用修改后的spec文件重新打包:
pyinstaller app.spec
额外建议
- 尽量使用虚拟环境打包,避免全局Python环境的包冲突
- 如果Python3.7和PyInstaller5.13.0存在兼容性问题,可尝试降级PyInstaller:
pip install pyinstaller==5.9.0
内容的提问来源于stack exchange,提问作者M14
相关产品推荐
相关产品推荐

