PyInstaller打包Python3.6与PyQt5常见错误排查与解决指南
本文汇总了使用PyInstaller打包Python3.6及PyQt5程序时遇到的典型错误。针对api-ms-win-crt系列DLL缺失警告,建议将Anaconda目录下的相关文件复制到Python安装目录。对于打包后运行出现“failed to execute script”且控制台无输出的问题,可通过添加-c参数查看具体报错,若涉及PyQt5.sip模块缺失,需在打包命令中使用--hidden-import显式指定。
前言:
近期在进行单片机开发学习时,需要编写串口通信的上位机程序。作者选用PyQt5结合serial模块实现该功能,在PyCharm环境中测试运行正常,但使用PyInstaller进行打包时遭遇诸多报错。经过查阅大量资料,现将相关问题的解决方案整理如下。
1. WARNING: lib not found: api-ms-win-crt-string-l1-1-0.dll dependency
2999 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python\python.exe
3031 WARNING: lib not found: api-ms-win-crt-heap-l1-1-0.dll dependency of c:\python\python.exe
3218 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python\VCRUNTIME140.dll
3312 WARNING: lib not found: api-ms-win-crt-convert-l1-1-0.dll dependency of c:\python\VCRUNTIME140.dll
6494 WARNING: lib not found: api-ms-win-crt-heap-l1-1-0.dll dependency of c:\python\DLLs_hashlib.pyd
7271 WARNING: lib not found: api-ms-win-crt-stdio-l1-1-0.dll dependency of c:\python\DLLs\unicodedata.pyd
上述警告表明Python安装目录下缺少相关的DLL文件。若本地Anaconda环境中存在这些文件,可尝试将其直接复制至Python安装目录,通常即可解决该问题。
考虑到部分用户可能未安装Anaconda,作者已将所需文件打包供下载。
点击这里下载
2. 打包完成后运行时出现 "fail to excute script"
此类问题往往难以直接定位,原因可能多种多样。
在使用PyInstaller打包Python程序时,常用的打包命令如下:
pyinstaller -F -w -i manage.ico yourpyfile.py
以下简要说明几个关键参数的作用:
- -F:指定生成单一的exe文件,不附带其他依赖文件。
-c:指定生成的exe文件以控制台模式打开。
-w:与-c参数对应,适用于带有UI界面的程序。使用此参数可隐藏控制台窗口,直接显示UI界面。
-I:为生成的exe文件添加自定义图标,需紧跟ico文件路径。
-p:指定模块搜索路径。若PyInstaller未能自动检测到模块安装路径,需通过此参数手动指定。
出现“failed to excute script xxx”
该错误提示意味着程序无法执行,具体原因复杂。若使用-w参数打包,由于隐藏了控制台,难以直接观察错误根源。因此,建议改用-c参数打包exe,以便在控制台查看具体的error输出内容。
在cmd中运行打包生成的exe文件
报错信息显示为:no modle named "PyQt5.sip"
实际上,tensorflow包已被导入且能被PyInstaller识别。然而,报错提示找不到tensorflow.contrib模块。
推测可能与版本有关,因为tensorflow更新后移除了部分功能,且某些模块的实现方式和名称已发生改变。
尽管根本原因尚未完全查明,但为了快速解决问题,可采取以下临时措施。
具体操作如下:
pyinstaller -F -I manage.ico yourpyfile.py --hidden-import PyQt5.sip
通过这种方式打包,直接屏蔽了该子包的导入。由于项目中并未实际使用此模块,因此可以忽略该报错。
至此,所有遇到的问题均得到解决。
总结
本文介绍了关于PyInstaller打包Python3.6和PyQt5过程中常见错误的解决方法。如需了解更多PyInstaller打包Python3.6及PyQt5的相关内容,请搜索本站历史文章或继续阅读后续文章。感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













