py2exe 中文问题总结!

py2exe 中文问题总结!

首先是python显示中文的问题,我们可以指定python默认的编码方式。
在 Python24\Lib\site-packages\  的目录里面新建一个文件名字  “sitecustomize.py”
内容

[Copy to clipboard] [ - ]
CODE:
import sys

sys.setdefaultencoding('gb2312')

这样你在命令行方式使用的时候显示中文就正常了!

我遇到的一个问题是在用py2exe之前在windows上测试都正常,编译后生成exe文件以后出现错误

[Copy to clipboard] [ - ]
CODE:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)

让我非常郁闷,后来在同事的机器上测试发现我的源码在他的机器上运行就会报告错误!
后来想起我改过的和他的不同就是我加了一个文件“sitecustomize.py”,现在就是想在py2exe编译的时候把这个文件加进去。后来在一个网站上发现了解决办法就是在我的源程序里面包含“sitecustomize.py”这个文件就可以了!

[Copy to clipboard] [ - ]
CODE:
import sys,sip
import sitecustomize
..........

"import sitecustomize " 文件里面包含这个一行,我再用python setup.py py2exe 生长可执行文件以后运行就不出现上面提到的“UnicodeEncodeError”错误了!
sip 这个模块是在做用pyqt的时候需要的一个包,不是必须的!
还有顺便说一下"setup.py" 这个文件我的是这样写的可以只生成一个单独的文件!

[Copy to clipboard] [ - ]
CODE:
from distutils.core import setup
import py2exe

includes = ["encodings", "encodings.*"]
options = {"py2exe":
            {   "compressed": 1,
                "optimize": 2,
                "includes": includes,
                "bundle_files": 1
            }
          }
setup(   

    version = "0.1.0",
    description = "filename",
    name = "filename",
    options = options,
    zipfile=None,
    windows=[{"script": "filename.py",}],  
)

不过发现生成的文件比较大,不知道是不是有什么方法让他小一点!

sip 的问题用py2exe发现另外的一个问题就是编译的时候报告找不到模块 sip 详细看了一下pyqt安装说明他是要求安装这个的,安装他你最好有C语言环境他需要编译!然后在程序源文件里面

[Copy to clipboard] [ - ]
CODE:
import sip  

这样就可以了!
减小体积
python -OO setup.py py2exe
upx --best *