Python编译、运行、反编译pyc文件
Python 并非完全是解释性语言,它也存在编译。先将源码文件 *.py 编译为 *.pyc,然后由 Python 的虚拟机执行。相对于 *.py 文件来说,编译为 *.pyc本质上和 *.py 没有太大区别,只是提高了模块的加载速度,并没有提高代码的执行速度。
生成 *.pyc 文件
要编译为 *.pyc 文件,需要安装compile模块:
pip install compile
Collecting compileDownloading compile-1.0.3.tar.gz (6.0 kB)
Building wheels for collected packages: compileBuilding wheel for compile (setup.py) ... doneCreated wheel for compile: filename=compile-1.0.3-py3-none-any.whl size=6547 sha256=d4ee7be709d3280af20a669a934784c1abe2051797b99ca81eaaef22baf116e2Stored in directory: c:\users\anonym\appdata\local\pip\cache\wheels\ec\c9\48\b5caf5b67a5ae3bd2dc854aefe766aafeaad244b863792ef32
Successfully built compile
Installing collected packages: compile
Successfully installed compile-1.0.3
生成单个文件
python -m py_compile test.py
生成多个文件
python -m compile all E:\Python\Paddle\PaddleClas\ppcls\modeling\architectures
反编译 pyc
首先安装库 uncompyle:
pip install uncompyle
Collecting uncompyleDownloading uncompyle-2.0.0-py2.py3-none-any.whl (2.2 kB)
Collecting uncompyle6Downloading uncompyle6-3.7.4-py3-none-any.whl (316 kB)|████████████████████████████████| 316 kB 10 kB/s
Collecting spark-parser<1.9.0,>=1.8.9Downloading spark_parser-1.8.9-py38-none-any.whl (18 kB)
Collecting xdis<5.1.0,>=5.0.4Downloading xdis-5.0.9-py2.py3-none-any.whl (129 kB)|████████████████████████████████| 129 kB 1.4 kB/s
Requirement already satisfied: click in c:\program files\python\python38\lib\site-packages (from spark-parser<1.9.0,>=1.8.9->uncompyle6->uncompyle) (8.0.1)
Requirement already satisfied: six>=1.10.0 in c:\program files\python\python38\lib\site-packages (from xdis<5.1.0,>=5.0.4->uncompyle6->uncompyle) (1.16.0)
Requirement already satisfied: colorama in c:\program files\python\python38\lib\site-packages (from click->spark-parser<1.9.0,>=1.8.9->uncompyle6->uncompyle) (0.4.4)
Installing collected packages: xdis, spark-parser, uncompyle6, uncompyle
Successfully installed spark-parser-1.8.9 uncompyle-2.0.0 uncompyle6-3.7.4 xdis-5.0.9
命令行如下:
uncompyle6 .pyc > .py
关于效率
关于效率,Python 文档 “Compiled” Python files 中这样介绍:
A program doesn’t run any faster when it is read from a .pyc or .pyo file than when it is read from a .py file; the only thing that’s faster about .pyc or .pyo files is the speed with which they are loaded.
也就是说,".py"和"pyc"运行速度相差无几,加载速度 *.pyc 稍占优势。
当然,除此之外,还有一个很大的优点:隐藏源码!
Python编译、运行、反编译pyc文件相关推荐
- python源代码的后缀名是_Python代码编译与反编译
众所周知,Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议.那么很自然会有人有这样的疑问:难道Python程序只能以 ...
- python防反编译_Python - 浅谈Python的编译与反编译
1 - Python编译过程涉及的文件 py 源代码文件,由python.exe解释,可在控制台下运行,可用文本编辑器进行编辑: pyc 源代码文件经过编译后生成的二进制文件,无法用文本编辑器进行编辑 ...
- 浅谈Python的编译与反编译
1 - Python编译过程涉及的文件 py 源代码文件,由python.exe解释,可在控制台下运行,可用文本编辑器进行编辑: pyc 源代码文件经过编译后生成的二进制文件,无法用文本编辑器进行编辑 ...
- Python程序编译与反编译
众所周知,Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议.那么很自然会有人有这样的疑问:难道Python程序只能以 ...
- Python - 浅谈Python的编译与反编译
1 - Python编译过程涉及的文件 py 源代码文件,由python.exe解释,可在控制台下运行,可用文本编辑器进行编辑: pyc 源代码文件经过编译后生成的二进制文件,无法用文本编辑器进行编辑 ...
- 谈谈Python的编译和反编译
用Python写脚本,小程序可谓非常方便,但它需要有特定的python环境才能运行,因此如果你想在别的电脑上运行时就会出现许多问题,就算已经安装了Python,但版本可能相差较大,且相关的依赖库没有安 ...
- 总结python源文件编译、反编译、加密混淆
本文更新地址 一.编译 1. 编译为 pyc 2. 编译为 pyo 或者 opt-n.pyc 文件 3. 编译成 pyd 或 so 链接库 编译方法一 编译方法二 编译方法三 使用建议 二.打包 1. ...
- python编译和反编译
结论:从反编译的角度来看,想通过把.py 明文文件编译为.pyc二进制文件的方式,达到对python源码保密的目的是不可行的. 文章目录 1. 文件结构 2. 编译 3. 反编译 4. 总结 1. 文 ...
- 方便无阻且全面的python程序exe反编译,可以不使用十六进制编辑器完成的常规反编操作
Python源代码能够被pyinstaller打包为脱离Python环境的exe可执行文件,然而,在有些特殊情况下,比如剖析病毒,数据恢复,需要反过来把可执行文件反编译为Python源代码,这个过程是 ...
- java在控制台中的反编译指令,反编译class-class文件反编译工具 v0.3.7免费版
反编译class class文件反编译工具是一款class文件反向编译的java工具,它能够将class文件逆向编译为java语言.此款软件比较小巧,特别适合初学者使用,感兴趣的赶紧下载啊! clas ...
最新文章
- 7.5. Zend Optimizer
- 什么是 jQuery 事件
- 数据字典在sga的哪一个组件中缓存_【赵强老师】Oracle数据库的内存结构
- 作为一个普通人的日常
- Oracle HTTP 乱码
- Python源码深度解析—对象的创建
- (0.2.2)如何下载mysql数据库(二进制、RPM、源码、YUM源)
- linux 下安装 vim
- android 结算权限,如何在Android应用程序中实施应用内结算?
- ROS 教程——从入门到入土
- 中小型企业网络IP地址规划案例
- 古代物流是如何进行的?
- 51单片机控制的数字温度计 PROTEUS 和51单片机教程
- mathematica-基于过程编程
- 【Qualcomm高通音频】如何使用QXDM、QCAT音频数据抓取
- 谈谈我对opencv中IplImage图像参数widthstep的理解
- 纯JSP简单登录实例
- 没事也研究一下外挂--C#简单游戏外挂制作(以Warcraft Ⅲ为例)
- 如何学会战略性思维?
- loadlibrary 失败的解决方法