Pyinstaller打包exe报错failedtoexecutescriptXXX的一种解决方案

Pyinstaller打包exe报错failedtoexecutescriptXXX的⼀种解决⽅
最近⽤PyQt5写了⼀个界⾯⼩程序,需要打包成exe给到其他windows上使⽤,⼀开始使⽤python 3.7 64位,⽤pyinstaller打包exe,在64位机上运⾏正常。但是⽬标电脑是32位的,所以需要打包32位exe,然后问题就出现了。
打包32位exe,虽然⽹上有教程说使⽤ Anaconda ⽣成python 的32位环境,我试了,但是没有成功,转⽽选择卸载64位
python,不如直接装32位的python,依旧使⽤pyinstaller 打包
消防管道防冻打包时虽然有⼏个警告但貌似还顺利,点开exe后报 "failed to execute script XXX",更换了多个python 版本,装了卸卸了装,翻了很多资料都没有解决,于是打算⾃⼒更⽣
众所周知,可以⽤这条命令打包不带控制台的exe:
pyinstaller -w -F  xxx.py
但这样就没办法看到报错了,因此保留控制台:
pyinstaller -F  xxx.py
打包后,程序⼀闪⽽过,⽤⼿机开视频录下来(60fps), 画质很渣但是依然⽆法看漏“unable to find QtCore.dll on PATH”:
问题应该就是丢失PyQt库了,少了就补上吧~ 直接将这个dll拷贝到 C:\Windows\System32下,然后开开⼼⼼的点开exe,问题就解决了~.....才没有解决......
需要把python的PyQt5库路径添加到环境变量PATH中才⾏,这回就真的能跑起来了,很开⼼(实际上到这⼀步折腾了很久),不过估计要在⽬标电脑装好PyQt5,然后添加环境变量,虽然有点⿇烦但是能⽤。
变压器防盗锁
事情就这么告⼀段落了....
才没有告⼀段落,我并不⽢⼼,凭什么64位跑得好好的,32位就丢dll,凭什么命令⾏运⾏正常,exe就丢东西?⽽且我到exe的临时⽬录看了,实际上Qt5Core.dll等库都好好的躺在⾥⾯的,但是为什么就有说不到,然后尝试了
英姿带1. 把Qt5Core.dll强⾏再打包在exe中,这个可以编辑spec⽂件实现,改datas那⾏,不⾏!
烟卷引流
2. 尝试在运⾏时调整运⾏路径,或者添加临时路径,让程序可以识别原本就在同⼀层⽬录下的dll们,没有到类似的教程(这样的需求本来就很奇怪吧?)
3. 换了另⼀台试了下,建了个虚拟机试了下,以排除系统区别,不⾏
有一个t形工件4. 换了低版本的python 试了下,不⾏
5. 尝试更换打包软件,好像⼤多都是pyinstaller,还有py_win32,cx_Freeze等,py_win32貌似需要重新写界⾯,cx_Freeze按例程跑了下⼀点效果都没有。
费了很长时间,可以说很⼼累了,有幸看到了⼀篇博⽂:
标题可以看出很接近了,其实降低了PyQt5的版本就可以了,似乎不需要像这篇博⽂⾥⾯降低pyinstaller的版本(3.5),打包后不⽤添加环境变量也可以正常运⾏了,exe体积还降低了⼀半...
⼀开始我⽤的PyQt5.13.0打包32位报错,降低到5.9.2就没问题了,顺便记⼀下pip安装指定版本的库:
pip install pyqt5==5.9.2
我喜欢把各种依赖的库写在⼀个cmd⽂件中,需要安装环境时双击⼀下就完事了
还原剂加药装置
总结⼀下就是:
Pyinstaller打包PyQt5程序时,若提⽰丢失dll⽂件,可尝试降低PyQt5的版本,如pyinstaller3.5 + PyQt5.9.2组合 (@Windows 7 x64 SP1 + python 3.7.4 x32)

本文发布于:2024-09-22 07:30:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/324699.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:打包   没有   添加   程序   问题   降低
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议