`
frymgump
  • 浏览: 5428 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

py2exe后运行时出现UnicodeEncodeError的解决方法

阅读更多

今天在用py2exe生成后文件运行时总是在运行到写一个文件时报UnicodeEncodeError: 'ascii' codec can't encode characters in position ... 直接用Python解释器运行没有问题,先是以为是自己将普通的str类型和unicode类型+到一起导致,可用了unicode(str)后还是不行,str.encode('utf8')也不行,这可把我郁闷坏了。
  说句实话,自从用了py2exe就没舒服过,总是经历一个又一个莫名奇妙的bug,尽管后来都被克服了,但很多解决的都不完美,让我对py2exe产生了恐惧感,生怕哪天这玩意儿彻底嗝屁了,之前做的一切努力都白玩了。

在网上用了各种关键字搜索一番发现这个问题似乎很多人都遇到过,某文指出
要在lib里建一个sitecustomize.py文件,然后里面写入

import sys
sys.setdefaultencoding('utf-8')

 然后就好了。

 

自己试了一下,依然无效, 失望之余发现另一篇文章中的代码中多了一行import sitecustomize猛然醒悟,加上这句后终于搞定了。

之后自己又想了一下,觉得这应该是py2exe的一个bug,究竟为什么,我也搞不清楚,不过在lib里自己加一个莫名其妙的库文件总是觉得不爽,在看一下代码,忽然发现其实就是引用sys设定一下默认的编码方式,于是把这个文件删掉,在源码文件中直接加入sys.setdefaultencoding('utf-8')这句代码,当然前提是先import sys,再用py2exe生成文件运行,一切OK,终于可以舒口气了。

 

py2exe真的让我又爱又怕。。。

 

 ps: 发了这篇文章后自己回去又直接用python解释器运行了一把,发现这回直接运行反而不行了,总是报module没有

setdefaultencoding这个属性的错误,网上查了一把,又看了下手册,发现sys.setdefaultencoding()解释里有这么一句: Once used by the site module, it is removed from the sys module's namespace. 看来要想使用这个方法还真得在sitecustomize里用,不过在网上看到了更好的解决方法,reload(sys)一下就好了~

0
0
分享到:
评论

相关推荐

    Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法

    当尝试将网络数据流(如网页内容)写入到本地文件时,经常会遇到错误提示:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position XXX,这表明在编码转换过程中出现了问题。 编码问题的根源...

    Python发起请求提示UnicodeEncodeError错误代码解决方法

    在Python编程中,UnicodeEncodeError通常发生在尝试将包含非ASCII字符(如中文、日文等)的Unicode字符串编码成特定的字节编码格式时,而该格式无法处理这些字符。在给定的示例中,错误信息指出Body ('测试') 不能被...

    Python UnicodeEncodeError: ‘gbk’ codec can’t encode character 解决方法

    网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的。 很多时候,我们使用了decode和encode,试遍了各种编码,utf8,utf-8,gbk,gb2312等等,...

    process_wiki.py 修改后

    网上目前有很多process_wiki,但本人下载后,运行总是遇到UnicodeEncodeError: 'gbk' codec can't encode… 所以就对相应代码进行了改进,忽略此类错误,在海量数据里面,丢掉几行数据没太大影响。

    sqlacodegen\codegen.py

    修改后 sqlacodegen 的codegen.py,可直接下载后替换到自己安装目录的\Python\Python37\Lib\site-packages\sqlacodegen\codegen.py 用以解决UnicodeEncodeError: 'gbk' codec can't encode character '\u02b1' in...

    pyspark+问题总结

    在使用PySpark处理包含中文字符的数据集时,调用`DataFrame.show()`方法可能会出现“UnicodeEncodeError: ‘ascii‘ codec can’t encode characters in position”这样的错误。 **解决方案**: 为了解决上述问题...

    Python实现LDA主题模型以及模型可视化

    在main.py文件中,这些步骤应该被封装成一个完整的程序,从读取data文件夹中的文本数据,到运行jieba分词,再到构建、训练LDA模型,最后通过pyLDAvis展示结果。readme.md文件可能包含了关于项目背景、步骤说明和使用...

    Python中出现UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\u2022’

    UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\u2022’ in position 7: illegal multibyte sequence Python中打开一个文件夹编写,file1 = open(‘E:\数据挖掘报告.txt’, ‘a’) 在写入的过程中...

    解决python2.7用pip安装包时出现错误的问题

    最近在使用pip安装包的的时候出现下面错误 UnicodeEncodeError: 'ascii' codec can't encode character u'\u258f' 查询资料后发现原因是pip安装python包会加载用户目录,用户目录恰好是中文的,ascii不能编码 ...

    ubuntu安装程序

     在Windows下可以不用重新分区,直接像安装一个应用程序那样安装Ubuntu,安装方法是,先使用一个虚拟光驱(例如微软的Windows虚拟光驱)装载ubuntu-9.04-desktop-i386.iso文件,然后运行根目录下的wubi.exe,运行前...

    Python 爬虫之超链接 url中含有中文出错及解决办法

    Python 爬虫之超链接 url中含有中文出错及解决办法 ...解决方法如下: import urllib from urllib.request import urlopen link="http://list.jd.com/list.html?cat=9987,653,655&ev=exbrand_9420&trans=1&JL=3_

    django项目运行因中文而乱码报错的几种情况解决

    当Python源代码(.py文件)包含中文注释时,可能会出现`UnicodeEncodeError`,提示'ascii' codec无法编码某些位置的字符。这是因为Python默认使用ASCII编码处理文本。解决这个问题的方法是在每个包含中文注释的.py...

    PyScripter

    python 集成开发编码软件 ...运行报错解决方案: UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128) Pysripter的解析器输出中文乱码解决方案:

    Python打印不合法的文件名

    当打印未知的文件名时,使用下面的方法可以避免这样的错误: def bad_filename(filename): return repr(filename)[1:-1] try: print(filename) except UnicodeEncodeError: print(bad_filename(filename)) 如果...

    解决python写入带有中文的字符到文件错误的问题

    在python写脚本过程中需要将带有...python中如果使用系统默认的open方法打开的文件只能写入ascii吗,如果要写入中文需要用到codecs模块 (使用了该方法,问题解决) # -*- coding: utf-8 -*- import codecs content =

    Python字符串的encode与decode研究.pdf

    例如,在 UliPad 中运行 Python 代码,如果输出 Unicode 编码的字符串,可能会出现 UnicodeEncodeError。 解决这个问题的方法是使用 encode 方法将 Unicode 编码的字符串转换成 ascii 编码。例如,prints.encode('...

    python bug清除手册-代码书写规范与基本使用.pdf

    当在字符串中搜索子字符串时找不到该子字符串,调用`str.find()`或`str.index()`方法时会发生此错误。例如: ```python s = "hello" index = s.index("world") # 子字符串不存在 ``` 解决方法:确保子字符串存在于...

Global site tag (gtag.js) - Google Analytics