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

为了方便使用,想把写好的文本处理程序打包成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')

你可能感兴趣的:(PyQt发布成应用程序中遇到的若干问题)