Python pyinstaller没有自动将依赖库打包进去,运行时提示找不到模块ModuleNotFoundError: No module named ‘PyQt5‘

Posted guangdeshishe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python pyinstaller没有自动将依赖库打包进去,运行时提示找不到模块ModuleNotFoundError: No module named ‘PyQt5‘相关的知识,希望对你有一定的参考价值。

问题

以前是可以正常打包运行的,后来打包后发现目录下少了很多dll文件,比如Qt5Core.dllQt5Gui.dll等,运行exe提示ModuleNotFoundError: No module named 'PyQt5'

分析原因

  • 由于打包时需要包含一些其他配置文件进去,所以需要修改xx.spec文件,于是打包时就使用命令pyinstaller -D xx.spec,但是不管怎么打包总是出现找不到PyQt5的问题
  • 于是尝试使用最原始的命令pyinstaller -D xx.py打包发现又是正常的,于是对比了该命令自动生成的xx.spec文件和我之前使用的xx.spec文件,发现只有datas=[]这个地方不一样
  • datas=[]这个地方是用来配置我们打包进去的额外文件,最近新增了一个需要打包进去的文件,于是把该文件去除掉后,使用pyinstaller -D xx.spec命令重新打包后就正常
  • 于是怀疑该文件名中可能因为包含特殊符号下划线"_"导致的,果然改文件名去掉下划线后就正常了

解决办法

出现类似的问题很可能就是xx.spec文件的改动引起的,需要仔细一步步排查

以上是关于Python pyinstaller没有自动将依赖库打包进去,运行时提示找不到模块ModuleNotFoundError: No module named ‘PyQt5‘的主要内容,如果未能解决你的问题,请参考以下文章

使用PyInstaller打包Python程序

python pyinstaller安装

PyInstaller将python脚本打包成exe可执行程序

将Python程序打包为exe方法

pyinstaller---将py文件打包成exe

Pyinstaller (python打包为exe文件)