Pyinstaller 打包exe 报错 "failed to execute script XXX"的一种解决方案
最近用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. 换了另一台试了下,建了个虚拟机试了下,以排除系统区别,不行
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)
Pyinstaller 打包exe 报错 "failed to execute script XXX"的一种解决方案的更多相关文章
- 【Python】pyinstaller打包运行报错failed to execute script main
前言 最近用pyinstaller打包的时候一直报"failed to execute script main". 最终使用"pyinstaller --hidden-i ...
- xhprof查看性能测试图一直报错:failed to execute cmd: " dot -Tpng"多种因素解决方案
xhprof查看性能测试图一直报错:failed to execute cmd: ” dot -Tpng”多种因素解决方案最近在新环境进行php代码性能测试,用了xhprof这个工具,搭建好以后,点击 ...
- 【解决】MacOS下 Python3.7 使用 pyinstaller 打包后执行报错 Failed to execute script pyi_rth__tkinter
Fix tcl/tk libs inclusion in tkinter with Python3.7 under MacOS 使用 Pyinstaller 打包时候报错 3027 ERROR: Tc ...
- python pyinstaller 打包exe报错
今天用python 使用pyinstaller打包exe出现错误 环境pyqt5 + python3.6 在导入pyqt5包之前加上如下代码 import sysimport osif hasattr ...
- Py打包exe报错
Py打包exe报错 下载地址 https://github.com/pyinstaller/pyinstaller 用管理员执行 pip install https:/ ...
- 安装maven工程报错"Failed to execute goal on project...Could not resolve dependencies for project..."
我在qingcheng_interface中Lifecycle目录下执行install命令后报错"Failed to execute goal on project...Could not ...
- Keil报错failed to execute 'd:\Keil\C51\BIN\C51.EXE'
关于老师发的keil软件报错如下: --- Error: failed to execute 'd:\Keil\C51\BIN\C51.EXE' 错误是因为老师直接拷贝的安装目录,里面的文件路径设置仍 ...
- 【spring cloud】在spring cloud服务中,打包ms-core失败,报错Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.0.4.RELEASE:repackage (default) on project
在spring cloud服务中,有一个ms-code项目,只为所有的微服务提供核心依赖和工具类,没有业务意义,作为核心依赖使用.所以没有main方法,没有启动类. 在spring cloud整体打包 ...
- maven install报错 Failed to execute goal on project my-manager-mapper: Could not resolve dependencies for project com.my:my-manager-mapper:jar:0.0.1-SNAPSHOT:
报错信息为: [ERROR] Failed to execute goal on project my-manager-mapper: Could not resolve dependencies f ...
随机推荐
- .net Core AJAX使用Header传递参数,以JsonResult返回信息
function postHeader() { $.ajax({ url : "/myTest/PostHeader?time="+ (new date()).getTime(), ...
- redis与mysql一致性方案解析
一 前言 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用.在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存 ...
- YUV/RGB与H264之间的编解码
1.源码下载 http://download.videolan.org/x264/snapshots/ 2.编译 ./configure --prefix=./_install --enable-sh ...
- 【记录】elasticsearch 注解
先记录地址,之后再整理 参考地址:https://blog.csdn.net/qq_28364999/article/details/81109666 https://blog.csdn.net/dy ...
- 链表反转&交换链表结点
leetcode链表反转链接 要求摘要: 反转一个单链表 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1-&g ...
- Python3.5-20190518-廖老师-自我笔记-面向对象
面向对象编程,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 把老师分为一类,把学生分为一类.具体到某一个学生就是 这类中的一个具体对象,对象的 ...
- shell倒计时下班时间
#!/bin/sh offWorkTime="19:00:00" offWorkHour=${offWorkTime::} offWorkMinute=${offWorkTime: ...
- PHP filter_var_array() 函数
定义和用法 filter_var_array() 函数获取多个变量,并进行过滤. 该函数对过滤多个值很有用,无需重复调用 filter_var(). 如果成功,则以数组形式返回请求变量的值.如果失败, ...
- px4的CMakelists.txt阅读
############################################################################ # # Copyright (c) PX4 D ...
- RCC初始化学习
一.设置RCC时钟 //#define SYSCLK_HSE #define SYSCLK_FREQ_20MHz //#define SYSCLK_FREQ_36MHz //#define SYSCL ...