pyinstaller打包exe运行闪退

这里写自定义目录标题

前言

闪退原因可能有很多,这里记录下我遇到的问题,简单来说是dll调用错误导致的闪退,因为我的python用的是32位的,但是pyinstaller却是64位的,属于用conda的时候没注意。

问题描述

用python2.7 32位开发来脚本,运行没有问题,就想打包成exe。

环境是用conda创建的虚拟环境,激活后conda install pyinstaller安装的pyinstaller,然后运行pyinstaller -F xx.py进行打包,中间其实是有告警的,没管,直接运行了生成的exe执行文件,结果闪退了。

解决过程

在exe运行闪退后,开始考虑的是程序运行结束了,还特地在程序最后加来死循环来验证,结果不是正常结束的,应该是程序自身或者打包有问题。

想起来打包的时候有告警"WARNING: lib not found: pywintypes27.dll dependency of xx",就搜索了一下pywintypes27.dll的路径,通过-p参数在打包的时候包含了路径,告警消失,但是闪退的问题没有解决,说明不是这里导致的。

因为运行窗口一闪而过,错误信息抓不到,后来偶然在cmd中.\xx.exe运行了程序,发现报错了,显示了报错信息"ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。"如下:
在这里插入图片描述

上网搜了一通也没找到解决办法,突然想起来我这是32位的python,conda是64位的,当时装python的时候还特地设置成了32BIT,而安装pyinstaller的时候应该是64位的,因为装完python我就把环境还原回64位了的,于是就将pyinstaller卸载了,将环境切换到32位之后重新安装了pyinstaller,再次打包,前面说的告警也没了,最终exe的闪退问题解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值