python源代码文件_Python代码编译与反编译
众所周知,Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议。那么很自然会有人有这样的疑问:难道Python程序只能以源代码的方式来运行吗,能不能通过某种方式来保护自己的源代码呢?答案是肯定的。这方面的技术主要有两种:一种方法是把Python程序伪编译成扩展名为.pyc的字节码文件,一种是通过py2exe、pyinstaller或者cx_Freeze对Python程序进行打包。本文主要介绍Python代码编译与反编译。
可以使用py_compile模块的compile()函数或compileall模块的compile_file对Python源程序文件进行编译得到扩展名为.pyc的字节码以提高加载和运行速度,同时还可以隐藏源代码。以Stack.py文件为例,常用的编译方法有(假设已导入py_compile模块):
- py_compile.compile('Stack.py')
这种形式等价于compileall.compile_file('Stack.py'),也等价于在命令提示符环境中执行命令python -m py_compile Stack.py,都会在Python安装路径下的__pycache__文件夹中生成文件Stack.cpython-35.pyc。
- py_compile.compile('Stack.py', optimize=1)
这种形式等价于compileall.compile_file('Stack.py', optimize=1),也等价于在命令提示符环境中执行命令python -O -m py_compile Stack.py,属于优化编译,会在Python安装路径下的__pycache__文件夹中生成Stack.cpython-35.opt-1.pyc文件。
- py_compile.compile('Stack.py', optimize=2)
这种形式等价于compileall.compile_file('Stack.py', optimize=2),也等价于在命令提示符环境中执行命令python -OO -m py_compile Stack.py,属于高级优化编译,会在Python安装路径下的__pycache__文件夹中生成文件Stack.cpython-35.opt-2.pyc。
此外,Python的compileall模块还提供了compile_dir()和compile_path()等方法,用来支持批量Python源程序文件的编译。
那么问题来了,是不是编译成.pyc文件以后真的无法查看源代码呢?很遗憾,还是有很多办法可以查看的,可以使用Python扩展库uncompyle6或其他类似模块来实现。使用pip工具安装uncompyle6之后,可以使用下面的代码对上面生成的.pyc文件进行反编译得到源代码:
uncompyle6.uncompyle_file('__pycache__Stack.cpython-35.opt-1.pyc', open('__pycache__Stack.py', 'w'))
python源代码文件_Python代码编译与反编译相关推荐
- python反编译加密文件_python打包的二进制文件反编译
简介 Pyhton是一个脚本语言,在运行Python代码时,最终由Python解释器来执行.解释器就是Python的运行环境,但是除了开发人员,大部分人在使用时并不会安装Python.所以官方就提供了 ...
- python读取python源代码文件_python 读写excel文件操作示例【附源码下载】
本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...
- python读取python源代码文件_python 学习源码练习(2)——简单文件读取
#文件创建 #!/usr/bin/python3 'makeTextFile.py--create text file' import os ls = os.linesep #get filename ...
- python源代码的后缀名是_Python代码编译与反编译
众所周知,Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议.那么很自然会有人有这样的疑问:难道Python程序只能以 ...
- so文件反编译为python代码_【反编译系列】四、反编译so文件(IDA_Pro)
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程 ...
- python读文件完整代码_Python读写文件的代码示例
本篇文章给大家带来的内容是关于Python读写文件的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助 一.读取文件 读取文件步骤: 1.找到文件 2.打开文件 3.读取文件内容 ...
- Java代码的编译与反编译那些事儿
GitHub 2.5k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 2.5k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 2.5k Star 的 ...
- Python程序编译与反编译
众所周知,Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议.那么很自然会有人有这样的疑问:难道Python程序只能以 ...
- myeclipse重新编译java,反编译class文件并重新编译的方法
在没有.java源码的情况下,如果想修改一个.class文件.可以通过以下步骤实现: 修改前的class文件: 一.反编译.class文件成.java文件. 1.可以使用Java Decompiler ...
- 谈谈Python的编译和反编译
用Python写脚本,小程序可谓非常方便,但它需要有特定的python环境才能运行,因此如果你想在别的电脑上运行时就会出现许多问题,就算已经安装了Python,但版本可能相差较大,且相关的依赖库没有安 ...
最新文章
- java 变量作用域 c语言_java - 数据结构 c语言 作用域问题
- cocos2d-x 帧动画学习
- app制作流程步骤_企业画册设计流程总结 告诉你画册制作步骤
- c语言创建链表存储10个数,C语言编写的建立单向int链表,连续输入10个结点创建链表,并实现在原链表中插入数字、删除数字、查找数字的功能...
- php测试插入,php – 使用Symfony测试数据库插入
- JAMA子刊:20来岁就要控制体重!分析超8万中国人数据发现,成年到中年体重每多增加10斤,老了之后死亡风险增加10%...
- python入门指南txt-十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南
- android移动开发慕课版本_Android移动开发基础教程(慕课版)
- 旅游景区如何利用优惠券提高客单价?
- java调用小冰,Java利用微软小冰API测颜值
- LimeSDR 中文教程 (一)
- ios微信多开 服务器,iOS微信双开(多开)
- 自动批量配音软件V2.6 附参数和使用教程
- 固定linux虚拟机ip地址,虚拟机下linux 系统网卡配置、固定IP地址
- Java GUI项目,一个练手的泡泡龙小游戏
- 半物理仿真系统——EPB HIL系统解决方案
- 出门问问AIGC SaaS平台亮相数贸会 赋能内容创作全流程
- 蓝桥杯Web应用开发
- java二分排序算法
- Spark零基础入门实战(一)Scala安装
热门文章
- 一道abc+cba=1333的问题
- 拓端tecdat|R语言缺失值的处理:线性回归模型插补
- 拓端tecdat|R语言无监督学习:PCA主成分分析可视化
- 拓端tecdat|Python使用矩阵分解法找到类似的音乐
- 深度学习(二十一)基于FCN的图像语义分割-CVPR 2015
- 55种开源数据可视化工具简介
- 决用 Anaconda 完美解 Python2 和 python3 共存问题
- 计算机网络 五层网络协议各司其职,一次讲清楚
- java数据读取容量,spring batch使用reader读数据的内存容量问题详解
- android 多线程互斥,Android同步类:Mutex和Condition