• Python的编译后文件介绍


    1.简介

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

    1)什么是pyc文件

    pyc是一种二制文件,是由py文件经过编译后,生成的文件,是一种byte codepy文件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

     

    2python程序编译方法:

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

    import py_compile

    py_compile.compile(r'H:game est.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

    https://github.com/zrax/pycdc

     

  • 相关阅读:
    Oracle函数题
    多态
    继承
    封装
    属性和修饰符
    方法重载
    构造方法
    类与实例
    SQL Server 2005 To Oracle
    Toad for Oracle 使用文档
  • 原文地址:https://www.cnblogs.com/superch0054/p/4010040.html
Copyright © 2020-2023  润新知