分类 开发语言 下的文章

python编译pyc和pyo文件(转)

原始出处:http://gmingzhe.blog.51cto.com/810664/163444

python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行,相对于py文件来说,编译成pyc和pyo本质上和py没有太大区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度,通常情况下不用主动去编译pyc文件,文档上说只要调用了import model那么model.py就会先编译成pyc然后加载

1. 如果需要特殊的单独编译,则只需要使用py_complie这个模块就行了,如下

import py*compile py*compile.compile(r'H:\game\test.py')

compile函数原型:

compile(file[, cfile[, dfile[, doraise]]])

file 表示需要编译的py文件的路径

cfile 表示编译后的pyc文件名称和路径,默认为直接在file文件名后加c 或者 o,o表示优化的字节码

dfile 错误消息保存的路径

doraise 可以是两个值,True或者False,如果为True,则会引发一个PyCompileError,否则如果编译文件出错,则会有一个错误,默认显示sys.stderr中,而不会引发异常

2. 如果要把一个文件夹下的所有py文件都进行编译,则用下面的命令

import compileall compileall.compile_dir(dirpath)

dirpath是我们要编译的文件夹的绝对路径

3. 如果要编译pyo文件则

编译成 pyo 就是在控制台执行

python -O -m py_compile file.py

其中file.py就是我们要编译的源文件

个人感觉这个原理知道就行了,其实没多大用处,仅仅提高了加载速度而已,另外还有一点好处就是可以减少文件的大小,可能对于嵌入式系统中把需要的模块都编译成pyo文件可减少容量,毕竟嵌入式系统多数都是容量有限,现在的pc硬件越来越强,仅仅提高加载速度没多大作用,不过这也是python的机理,它就是这么干活的,知道就好,呵呵

Windows下GTK中文显示问题

人算不如天算,竟然要在Python+GTK和VB.net之前选择了。

这里下载了PYGTK整合包安装完成后,发现运行后中文显示很丑陋,同时日志中显示如下信息:

PangoWarning: couldn't load font "瀹嬩綋 Not-Rotated 9", falling back to "Sans Not-Rotated 9", expect ugly output.

PangoWarning: couldn't load font "瀹嬩綋 9", falling back to "Sans 9", expect ugly output.

PangoWarning: couldn't load font "宋体 Not-Rotated 9", falling back to "Sans Not-Rotated 9", expect ugly output.

显然,上面的乱码应该是“宋体”,但没能正确识别。

解决办法是在etc\gtk-2.0\目录下新建一个gtkrc.zh_CN文件,其内容可以从gtkrc中复制一部分,再增加汉字使用的指定:

- 阅读剩余部分 -