设为首页 加入收藏

TOP

Python的编译后文件介绍
2014-11-24 02:36:32 来源: 作者: 【 】 浏览:1
Tags:Python 编译 文件 介绍

1.简介


相对于py文件来说,编译成pyc和pyo本质上和py没有太大区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度,通常情况下不用主动去编译pyc文件,除非需要商业提供,防止源代码泄露。


(1)什么是pyc文件


pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。


(2)什么是pyo文件


pyo是优化编译后的程序 python -O 源文件即可将源程序编译为pyo文件


把需要的模块编译成pyo文件可以减少容量


2.反编译


将python文件编译为pyc文件(使用compileall 命令),再删除源代码。


(该文件类似于java中的class文件,但是我们使用的2.7版本的python,目前没有


免费版的反编译工具,所以目前要破解不是很容易,所以可以不必再做混淆)


(1)命令行编译方法:


python -m compileall src/


echo compile finished...


rm -rf src/*.py


编译成pyo的话:


就是在控制台执行 python -O -m py_compile file.py


(2)python程序编译方法:


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


import py_compile


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


反编译工具:


1.uncompyle2 只能编译2.7


https://github.com/wibiti/uncompyle2


反编译Demo代码:


import os
import sys

def displayFile(file):
unPath= sys.executable
unPath=unPath[ 0 : unPath.rfind( os.sep ) ]
newname = file[0:file.rfind('.')] + '.py'
command = "python -u "+unPath+"\scripts\uncompyle2 " + file + ">" + newname
try:
os.system(command)
except e:
print file

if __name__ == '__main__':

#print unPath
print 'init'
displayFile('E:\\test.pyc')
print 'finished'


2.zrax/pycdc 可以编译3.0


https://github.com/zrax/pycdc


推荐阅读


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇百度2014校园招聘技术类软件研发.. 下一篇Python中自定义类对象json字符串..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: