PyQt发布成应用程序中遇到的若干问题

本文记录了在使用PyInstaller将PyQt应用程序打包成exe过程中遇到的两个问题及其解决办法。问题一是发布后的exe报TypeError,原因是QString与Unicode类型不兼容,解决方法是将QString转换为str。问题二是路径包含中文且未指定编码时,打开文件会报错,解决方法是将路径字符串转换为Unicode编码。
摘要由CSDN通过智能技术生成

为了方便使用,想把写好的文本处理程序打包成exe,看到网上很多人推荐使用pyinstaller,于是也下载了一个。

打包之前,在spyder环境里已经运行通过,原以为也就是打包一下,几分钟的事儿,没想到遇到了各种问题,还是Mark一下吧。

问题一: 在spyder环境中运行通过,但是发布后就报TypeError的错误,提示QString如何如何的

原因:PyQt里从GUI获取的字符串是QString类型,而在sypder里,进入debug,看到从GUI获取的是Unicode类型。QString的确是Unicode类型,但是却不完全等同于Unicode,它不能使用Unicode的函数。并且数据的处理过程中,基本上是需要python的内置str类型。这里就需要把QString转为str。而Unicode转换成str有现成的函数,于是就需要QString先转成Unicode,再转成str。

解决方法:my_str = unicode(q_str).encode("utf-8")

     问题二:当路径中出现中文的时候,并且路径是变量,且没有指定编码,打开文件,读取文件时会报错。在sypder里debug时,报错IOError: No Such File or Directory,但实际上,我是以写模式打开的文件,文件根本不需要存在,而且网上看到,就算是读模式打开且文件的确存在时,也会报不存在的错误。链接如下:http://my.oschina.net/letiantian/blog/224218 ,帖子里提到需要转换成Unicode编码。的确,因为在上述中,已经把QString转成了str(从GUI获取的QString是作为文件路径使用),所以这里需要再把str转成Unicode。

解决方法:file_dest = open(dst_path.decode('utf-8'), 'w')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值