加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python的编译后文件介绍

发布时间:2021-11-20 19:07:33 所属栏目:教程 来源:互联网
导读:1.简介 相对于py文件来说,编译成pyc和pyo本质上和py没有太大区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度,通常情况下不用主动去编译pyc文件,除非需要商业提供,防止源代码泄露。 (1)什么是pyc文件 pyc是一种二进制文件,是由py文

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:gametest.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+"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.0

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读