pyinstaller打包没有命令行窗口就无法运行的解决方案

解决exe有命令行窗口可以运行,无命令行窗口就无法正确运行

最近在做一个项目需要将python代码打包成exe文件,根据网上各种关于pyinstaller的介绍以及排错,终于打包好了console=True能运行,然而当我选择console=False再打包时却无法正确运行了,而且关闭软件之后进程仍然存在。网上找了很久也没有解决,于是自己用VS去调试exe,发现无命令行的软件又可以运行了。VS调试配置如下:在这里插入图片描述
当我把IO重定向禁用,发现程序又不能运行了,所以我怀疑就是IO重定向的问题。因为我的代码中需要将运行迭代的进度输出出来,所以没有命令行窗口就无法提供一个输出的容器,程序也就无法回调确认进度是否完成,也就陷入了死循环,所以进程也就无法结束。
python中IO重定向有很多方法,这里我选择将标准输出重定向至内存,由内存来存放程序的运行进度,然后写入日志文件。这里我们需要知道自己的程序输出的是stdout还是stderr,我们可以通过pycharm的输出结果查看:
在这里插入图片描述
pycharm中红色字体表示stderr,白色字体表示stdout,我的进度条是红色的也就是stderr。

import io
import sys
# 创建一个字符串缓冲区
output = io.StringIO()
# 重定向 stderr 到字符串缓冲区
sys.stderr = output
#这里可以插入有标准输出的代码,如print()等
#将stderr内容写入到日志文件
with open("log.txt","w",encoding="utf-8") as f:
	f.write(sys.stderr.getvalue())

通过添加上面的代码,终于成功解决了困扰很久的pyinstaller打包问题😄😄😄😄😄

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清洄KAKA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值