近日用python写了一个脚本为mm-bukepa.org转换论坛数据,需要在脚本里面写些中文,发现不支持,只能用
print '/xd7/xaa/xbb/xbb/xb3/xcc/xd0/xf2'的方式输出中文,也停麻烦的,网上一查,发现了解决方法,#!/usr/bin/env python # coding=cp936 #加上这句就能直接输出中文了 # # # print '转换程序'
脚本写好后,用py2exe,发现又不支持中文了,出现错误提示
self.patch_python_dll_winver(dst)
File "C:/Python25/Lib/site-packages/py2exe/build_exe.py", line 918, in patch_p ython_dll_winver add_resource(unicode(dll_name), data, RT_STRING, id, delete)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xbd in position 19: ordinal not in range(128)
再google,发现解决办法,在C:/Python25/Lib/site-packages目录下创建sitecustomize.py文件,文件内容为:
#!/usr/bin/env python # coding=cp936 import sys sys.setdefaultencoding('gb2312')
再运行py2exe,解决问题,可以正常打包。用py2exe打包成一个执行文件的方法是:
1、创建自己的脚本文件 fix.py
2、创建allinone.py打包文件,让其与fix.py放置在同一个目录。allinone.py的内容为:
from distutils.core import setup import py2exe includes = ["encodings", "encodings.*"] options = {"py2exe": { "compressed": 1, "optimize": 2, "includes": includes, "bundle_files": 1 } } setup( version = "3.0.0", description = "Data Convert Tools(For MM-Bukepa.org only)", name = "Data Convert Tools", options = options, zipfile=None, console = ["fix.py"], )
3、运行python allinone.py py2exe,在dist目录将生成fix.exe、MSVCR71.dll和w9xpopen.exe三个文件,MSVCR71.dll大部分机器都有,我的脚本不在98下运行,那就不要w9xpopen.exe,只剩下fix.exe文件。
4、压缩程序。程序体积有点大,2M多,用upx压缩一下,执行命令upx -9 -f "fix.exe"
5、生成1.44M的fix.exe,搞定,别的机器运行fix.exe就不用安装python了。