Gooey使用python打包后,print不能输出到GUI的命令行窗口内的问题解决
为了给自己的图片接口站api.horosama.com补充图片,写了个壁纸爬虫程序,同时用Gooey做了个简单的GUI,然而,程序在vscode里直接运行的时候,是可以print函数输出到GUI的命令行窗口的,用pyinstaller打包之后就不行了。
搜了一下github上Gooey的issue发现有大佬给出了解决方法,在代码前加入如下几行
import codecs
import sysif sys.stdout.encoding != 'UTF-8':sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer, 'strict')
if sys.stderr.encoding != 'UTF-8':sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict')
然后记得print函数加入参数flush=True,再打包一次就可以啦~
这行代码之所以能起作用,我推测应该还是和python的print编码以及windows的控制台编码的问题,可以参考下这篇博文python,window控制台下编码问题。
引用下这篇文章的开头部分如下:
Python 的 print 语句有一个很奇怪的 bug。它的功能是向控制台输出字符,这本身不是问题。但是 Python 内部是支持 Unicode 字符串的,而 Unicode 字符串在用 print 输出时 print 要进行一次从 Unicode 到 ANSI/MBCS 编码的编码,编码后才会以 8-bit 流输出结果。
编码就编码吧,这也是很正常的。对于控制台程序来说,输出可能被重定向到文本文件。如果不指定编码,重定向时就不知道以何种 8-bit 字节流写入文本文件,所以,输出到控制台的东西理论上也应该是经过编码的 8-bit 流。综上所述,确实有必要进行一次 WCHAR 到 char 的转码。
但是问题在于,Python 的 print 语句在转码时,居然用的是 strict 规则。即,待输出字符串若含有当前代码页之外的字符,就会在转码过程中出现不可转码的文字,从而抛出 exception。print 语句又不处理这个 exception,导致一个平平常常 print 语句竟然会引起 Python 程序的异常!这简直是不可思议。
Gooey使用python打包后,print不能输出到GUI的命令行窗口内的问题解决相关推荐
- matlab命令行窗口显示长度设置_设置命令行窗口输出显示格式 | MATLAB format| MathWork...
本页对应的中文页面未升级,但未能翻译. 若应查看最新内容,请点击这里访问英文页面. 设置命令行窗口输出显示格式 format 将命令行窗口中的输出显示格式修改为 style 指定的格式. format ...
- Unity3D打包后日志文件输出目录
Unity3D打包后日志文件输出目录,包括日志文件和崩溃时记录文件 C:\Users\Administrator\AppData\LocalLow\长沙迪迈科股份有限公司\镍矿探秘 其中". ...
- Python如何用print函数输出田字格?如何计算十年后的体重?
Python如何用print函数输出田字格? 在 Python 编程中,使用 print 函数输出田字格是一项常见的任务.田字格是由"田"字形的方格组成的表格,通常用于排版或整理数 ...
- python打包后程序报错:PermissionError: [Errno 13] Permission denied
python打包后程序报错:PermissionError: [Errno 13] Permission denied 用python写了一个小程序,然后打包成exe,测试过了功能是完善的,但突然有一 ...
- python idle 常规命令_Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
1 命令行窗口 开始栏搜索command,打开命令提示符,即为命令行窗口. 运行一个Python程序,需要输入:Python + 程序地址 + 程序名.py 如图: 2 Python解释器 开始栏搜索 ...
- 解决CMD命令行窗口不显示颜色问题python
最近在做一个CMD命令行窗口显示不同颜色的字体的功能时,发现按照网上的方法设置均不生效 1.比如最常见的方法,print("\033[0;30;40m\tHello World\033[0m ...
- 【Python知识点梳理】10.Python的垃圾回收机制、代码规范及命令行参数
Python的垃圾回收机制.代码规范及命令行参数 文章目录 1.Python的垃圾回收机制 2.Python的引用计数机制 3.Python中的循环数据结构及引用计数 4.Python中的GC模块 5 ...
- java输出希腊字母_java 命令行窗口输出希腊字母表
/** * @author Administrator * 编写程序,命令行窗口输出希腊字母表.(希腊字母表开始为α,最后一个为ω) */ public class OutGreekLetter { ...
- 命令行窗口cmd中的python指令
目的 cmd指令 查看已安装的库 pip list 查看指定的库 pip show 库名称 查看可升级的库 pip list -o 升级指定的库 pip install --upgrade 库名称 安 ...
最新文章
- c语言字符串转64位哈希值,对字符串进行hash处理用什么方法好???
- cisco firewall (ASA Series)
- python机器学习预测_使用Python和机器学习预测未来的股市趋势
- young people can also be a leader
- 【Spark】Spark的Kryo序列化
- 联想即将推出预装 Fedora 的 ThinkPad 笔记本电脑
- python的8种标准数据类型有哪些_Python的八种数据类型
- MySQL 8.0设置sort_buffer_size
- CSS使图像等比例缩放兼容IE6、IE7、FF
- cplex的下载、安装、IDE编程及相关问题解决
- mysql建表语句转hive sql
- 尚学堂python开发工具_尚学堂百战程序员分享:Python的数据模型
- 谭老师c语言入门 小甲鱼,《零基础入门学习C语言》视频教程(小甲鱼主讲全套共65节)...
- 机器人操作系统、自动驾驶等研发工具整理
- 模拟数据生成工具--Faker
- Tightvncserver 连接树莓派的方法及步骤
- 疾病研究:重症肌无力
- 外箱条码标签如何用条码标签编辑软件制作?
- 40 How Many Numbers Are Smaller Than the Current Number
- Excel 筛选重复值和删除重复值的异同