`
frymgump
  • 浏览: 5306 次
  • 性别: 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 解决方法

    主要介绍了Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法,需要的朋友可以参考下

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

    主要介绍了Python发起请求提示UnicodeEncodeError错误代码解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    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...

    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_

    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)) 如果...

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

    django项目的.py文件文件中加入了中文注释,经常会因此报错而导致无法运行,究其原因是编码的问题,最后的解决办法是直接在有中文注释的.py文件的顶部加上: # -*-coding:utf-8 -*- 2.运行过程中的中文乱码的报错 ...

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

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

    python2.78+pyscripter2.53 附乱码解决方案

    python2.78 32位 pyscripter2.53 32位 附带Pyscripter报错的解决方法: 第一次打开就出错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2

    解决uWSGI的编码问题详解

    最近工作中遇到一个问题,在把 Flask 写的应用通过 Supervisor+uWSGI 部署到正式服务器上时,出现了这样的错误: Unable to print the message and arguments – possible formatting error. 或者 ...

    python sqlobject(mysql)中文乱码解决方法

    UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in ...Python mysql 中文乱码 的解决方法,有需要的朋友不妨看看。 先来看一段代码:复制代码 代码如下:import MySQLdb db_user = “tiger”

    WebBuilder-ST:一个为Sublime Text2而开发的JS+CSS批量压缩插件(需要Mono或.NET)

    如果使用过程中出现 "UnicodeEncodeError: 'ascii' codec can't encode characters" 的错误, 此问题可能是Sublime Test2的Bug, 请在Sublime Text2安装目录找到 "sublime_plugin.py" ,在import之后其它代码之前添加...

    解决Python print 输出文本显示 gbk 编码错误问题

    前阵子想爬点东西,结果...下面给出三种解决方法。 第一种方法:直接替换出错的内容 import requests url = 'https://blog.csdn.net/jianhong1990/article/details/17349537' print(requests.get(url).text.replace

    python文件操作(二) 字符编码 函数入门

    要将文本写入文件,你在调运open()时需要提供一个参数,告诉python你要写入打开的文件了。 ‘w’ 创建一个新文件,把旧文件覆盖掉 f1 = open('test2','w',) f1.write('this is a test from old ......') f1 = o

Global site tag (gtag.js) - Google Analytics