首页 / 操作系统 / Linux / 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_compilepy_compile.compile(r"H:game est.py")反编译工具:1.uncompyle2 只能编译2.7https://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+"scriptsuncompyle2 " + 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.0https://github.com/zrax/pycdcPython 的详细介绍:请点这里
Python 的下载地址:请点这里推荐阅读:Python正则表达式介绍及使用方法 http://www.linuxidc.com/Linux/2013-10/90832.htmPython中的sorted函数以及operator.itemgetter函数 http://www.linuxidc.com/Linux/2013-10/90820.htmPython+Django 快速建立简易blog http://www.linuxidc.com/Linux/2013-09/90636.htm[Python] 安装及环境配置 http://www.linuxidc.com/Linux/2013-09/90278.htmPython算法之插入排序 http://www.linuxidc.com/Linux/2013-09/89929.htmPython 删除某个路径下所有文件及模块调用注意事项 http://www.linuxidc.com/Linux/2013-09/89752.htmUbuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb http://www.linuxidc.com/Linux/2013-08/89270.htm用Python备份MySQL数据库的脚本 http://www.linuxidc.com/Linux/2013-08/88589.htm