Bug2:python64位打包程序无法在win7 32位上运行

前言:这篇文章主要记录一下,打包时出现的坑,这里面主要包含两个坑,按需要查看解决方法,文章的最后是存放两个方法的总体解决方法(可以直接解决两个问题),点击点击跳转
1 项目场景: 1.1 环境需求:
? 使用当前手头上的电脑环境,进行编译公司的代码 。
要求:exe程序可以在 32系统和 32位上可以运行 。
当前环境:.9-64位,系统
1.2 初步解决思路:
使用的库对代码进行打包 。
安装:在上的解析器上搜索下载库,或者使用cmd终端输入pip进行安装 。
注意:在安装前需要先去查看一下是否支持你当前的版本 。不过一般情况下都是符合的,除非你使用的版本很老,然后版本又很高就会发生不匹配 。
2 遇到问题描述: 2.1 问题1:64位打包的程序无法在32位上运行
在终端上输入打包指令 。-D指打包完成后生一个多文件的exe程序,-i是添加公司的图标,后面要编译的文件是项目中所有的py文件 。
pyinstaller -D -i 图标文件 要编译的py文件
结果在 32位上执行弹窗报错:此文件的版本与正在运行的版本不兼容,请检查计算机的系统以了解需要x86(32位)还是x64(64位)版本的程序,然后联系软件发布者 。
2.1.1 原因分析:
? 很显然,在上的弹窗已经告诉我们了,在 32位的环境下不支持 64位编译出来的应用程序 。
? 这其中的原因应该是在于我们安装的模块 。首先我的环境是.9 64位 。那么他打包出来的就是64位的包 。这就是为什么64位的exe不能在32位执行的原因 。
2.1.2 解决方案:
? 由于我询问了做C++底层的同事,他们主要的是编译成32位的动态库 。再加上我需要运行的系统是win7 32位 。所以我索性把我的.9 64位直接卸载使用.9的32位 。
? 重新打包成新的exe程序 。这时 32位上就不会报位数不相符的弹窗了 。
在此,如果你的电脑是 64位系统,位那么你编译出来的应用程序应该就能在 32位系统上跑了 。但是如果你要运行的exe环境是win7 的32位 那么你可能就会遇到下面的问题2 。
2.2 问题2:win10打包应用程序在win7运行弹窗报错说缺少api-ms-win-core-path-l1-1-0.dll
? 解决上面的问题1后,我本以为我在打包的条路上算是走到头了,结果直接报出这个错误……
? 报错信息:无法启动此程序,因为计算机中丢失api-ms-win-core-path-l1-1-0.dll 。参数重新安装程序已解决此问题 。
2.2.1 原因分析
? 此处再次声明一下问题出现的原因:我使用win10 的.9 32位打包后的应用程序放到win7 32位下运行报的错误 。
? 问题原因未知,但是我确定报错问题不是说这台win7 32位的设备缺少api-ms-win-core-path-l1-1-0.dll这个动态库,而是出在上 。
? 因为我同事也是用win10系统32位打包程序,但是他的应用程序在这个win7 32位上能完美运行 。
2.2.2 踩坑经历:
? 此处主要说一下我踩过的坑,问题2的解决方法点击跳转 。
? 我在网上也查找了相关方案,但是仍然解决不了我的问题……
? 我先罗列一下我的一些操作,可能发布这些解决方法的博主可以解决他们相关的问题 。但是对于我的问题可能不太适用 。
2.2.2.1 不适用的解决方法1
? 单纯看这个报错,应该是我要运行exe的win7 32位电脑上缺少了api-ms-win-core-path-l1-1-0.dll这动态库 。
? 按照提示信息,我下载了api-ms-win-core-path-l1-1-0.dll这个库,然后按照其他博主的方法放到了文件夹下 。虽然他这个方法解决了弹窗报错,但是我发现我的exe执行会发生闪退问题!exe闪退的可能因素非常多 。
? 我再使用cmd终端来执行我的exe,这样就能看到执行期间的结果 。不过结果报的错误很不友好,甚至在CSDN上都没有相关的解决方法,他的大概意思就是执行exe时发现一个错误的同时又发生其他错误 。由于bug特别长我就没有截图 。最后由于长时间没有找到解决方法我就放弃了该方法 。