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

news/2024/7/16 7:19:09 标签: pycharm, ide, python

问题

以前是可以正常打包运行的,后来打包后发现目录下少了很多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文件的改动引起的,需要仔细一步步排查


http://www.niftyadmin.cn/n/1018820.html

相关文章

Flutter运行环境配置小结

1.环境变量 FLUTTER_STORAGE_BASE_URLhttps://mirrors.tuna.tsinghua.edu.cn/flutter PUB_HOSTED_URLhttps://mirrors.tuna.tsinghua.edu.cn/dart-pub 2.AndroidStudio运行Android项目一直卡在Running Gradle task assembleDebug... 项目/android/build.gradle添加阿里镜像r…

Android获取所有App信息

示例代码 /** * 获取所有APP信息&#xff0c;保存到SDcard/download/AppInfo.txt文件中 */ public static void getAppInfo(Context context) {if (context null) {return;}ArrayList<String> launchList getLauncherList(context);Log.d("getAppInfo", Arr…

shell脚本操作Sqlite数据库

示例1&#xff1a;执行一条sql语言 sqlite3 /data/adb/lspd/config/modules_config.db <<EOF update modules set apk_path$NalToolXposedPath where mid1; EOF示例2&#xff1a;执行多条Sql语句 sqlite3 /data/adb/lspd/config/modules_config.db <<EOF DELETE …

《java并发编程的艺术》学习小结

java并发编程的艺术 第一章 并发编程的挑战 上下文切换&#xff1a;cpu通过时间片让不同线程轮流运行&#xff0c;从线程状态保存到下一次线程运行这个过程就是一次上下文切换多线程并不一定比单线程快&#xff0c;因为多线程会有线程创建和上下文切换的开销如何减少上下文切…

Windows javaw进程占用cpu资源100% 导致电脑卡顿

问题 Windows10电脑用着用着就发现很卡&#xff0c;打开任务管理器发现javaw进程的cpu占用率非常高&#xff0c;导致cpu占用100%&#xff1b;稍微懂点开发的人都知道javaw是java相关进程&#xff0c;也就是有某个java程序占用了很多cpu资源导致的卡顿 找出元凶&#xff08;以…

如何将java/Android签名工具keytool单独提取出来使用

背景 开发的工具有个获取Android app签名功能&#xff0c;用到了keytool&#xff0c;这个工具是存在于java/jdk/bin/keytool路径下的&#xff0c;一般只要配置了jdk环境变量都可以正常使用&#xff0c;但是当时没有考虑到有些人电脑没有配置这个环境变量&#xff0c;导致无法正…

MediaRecorder录制屏幕时在部分机型上报错prepare failed:-22

在调用MediaRecorder.setVideoSize方法设置宽高时&#xff0c;由于宽高是动态获取的屏幕宽高&#xff0c;但是这个方法不允许传入奇数值&#xff0c;而出问题的手机的高度刚好就是奇数&#xff0c;所以就报错了。 解决办法就是判断下宽高是否奇数&#xff0c;是的话就减1让它变…

ARouter使用自定义注解处理器,自动生成跳转Activity的代码,避免手动填写和管理path

大家都知道ARouter要跳转目标Activity需要两步&#xff1a; 1.在Activity上添加Route注解 // Add annotations on pages that support routing (required) // The path here needs to pay attention to need at least two levels : /xx/xx Route(path "/test/activity&…