Python的编译后文件介绍

本文介绍Python中pyc和pyo文件的作用与生成方式,对比它们与py文件的区别,并提供编译与反编译的方法及工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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\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

 

转载于:https://www.cnblogs.com/superch0054/p/4010040.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值