Python+pyc文件编译和运行
有时候在python代码运行结束后会产生pyc文件,有时候又不会产生。那么,到底什么时候会产生?以及pyc文件到底起什么作用?进行了梳理和总结。
首先,了解python程序的运行过程
python程序的运行依赖于解释器(interpreter)。
Python解释器(interpreter)在执行任何一个Python程序文件时,首先进行的动作都是先对文件中的Python源代码进行编译,编译的主要结果是产生一组Python的字节码(byte code),然后将编译的结果交给Python虚拟机(Virtual Machine),由虚拟机按照顺序一条一条地执行字节码,从而完成对Python程序的执行动作。
pyc文件是什么
对于Python编译器来说,PyCodeObject对象是其真正的编译结果,PyCodeObject对象保存在内存中。在程序运行结束时,会根据规则决定是否将PyCodeObject对象写回硬盘,如果写回硬盘,就会生成pyc文件,所以,pyc文件只是这个PyCodeObject对象在硬盘上的表现形式。
什么时候会产生pyc文件
假如我们写一个简单的python程序:
test_pyc.py
print(“hello pyc”)
python3 test_pyc.py运行程序,发现并没有生成pyc文件。
那么如何生成pyc文件呢,可以使用命令python -m compileall -b .来生成pyc文件,会在和py文件对应的目录下生成pyc文件。
pyc文件有什么作用
pyc文件是由.py文件经过编译后生成的字节码文件,其加载速度相对于之前的.py文件有所提高,而且还可以实现源码隐藏,以及一定程度上的反编译。因此,不同版本的python可能运行不了同一个pyc文件。
一、编译生成pyc:
(1)单个文件
>>import py_compile
>>py_compile.compile(r'H:/game/test.py')
(2)多个文件
>>>import compileall
>>>compileall.compile_dir(r'D:\test')
(3)直接通过命令来运行,可以看到下面的命令中并没有用到compile()函数,
这是因为py_compile模块的main()函数中调用了compile().
python -m py_compile test.py
python -O -m py_compile test.py
-O 优化成字节码
-m 表示把后面的模块当成脚本运行
-OO 表示优化的同时删除文档字符串如果你想看compile(), compile_dir(), compile_path()具体每个参数是干吗用的,可以使用printpy_compile.compile().__doc__来查看,或者直接打开py_compile.py,compileall.py文件来看。
二、运行Pyc
>>> Python test.pyc
三、测试
'''
假设我们的文件夹下,只有文件Test.pyc,这个文件是将Test.py文件编译而得。但是这个文件需要调用文件Gl.py,先不将Gl.py转为Gl.pyc文件。
执行下面命令:
'''D:\A\B\__pycache__>python Test.pyc
'''
出现如下错误
Traceback (most recent call last):File "D:\A\B/Test.py", line 43, in <module>from GL import GL
ModuleNotFoundError: No module named 'Gl'
原因就是GL.py没有转成Gl.pyc文件。
将Gl.py转换后,执行命令,
'''D:\A\B\__pycache__>python Test.pycElement Delta h Max error Rate5 0.2 1.658E-0310 0.1 4.338E-04 1.9346720 0.05 1.080E-04 2.0064340 0.025 2.697E-05 2.0014380 0.0125 6.747E-06 1.99889D:\A\B\__pycache__>
Python+pyc文件编译和运行相关推荐
- python pyc文件解析_如何反编译pyc文件
如何将.pyc和.pyo文件反编译为.py文件 pyc大约在python2刚出的时候有.后来就很少找得到了.有一次,不小心把.py删除了,通过pyc还把代码还原了. 你搜索uncompyle2, de ...
- python pyc文件使用_py,pyc,pyw文件的区别和使用
熟悉python编程的都知道,python三种最常见的py文件格式,.py,.pyc,.pyw,下面说一说它们各自的使用. py文件 python最常见的文件,是python项目的源码: 文件执行时l ...
- Python pyc文件 bytecode的压缩, 加壳和脱壳解析
我们常常看到, 自己用PyInstaller等库打包的exe被别人反编译.而源代码在exe文件中是以字节码形式存储的.掌握了字节码的加密技巧, 就可以防止源代码的反编译. 目录 1.字节码是什么 2. ...
- ts文件编译与运行,vscode自动编译
ts文件编译与运行 根据官方文档提示,ts文件无法直接运行,需要编译成js文件. 1.那么问题就来了,如何把ts文件编译成js文件呢? 官方文档说,Visual Studio 2017和Visual ...
- Python Pyc文件
c 是 compiled 编译过的意思 pyc文件是由Python解释器将模块的源码 转换为字节码 Python 这样保存字节码是作为一种启动 速度的优化 字节码 Python在解释源程序是分成两个步 ...
- python pyc文件是啥_python pyc文件
这么编译: >>> import py_compile >>> py_compile.compile(r'test2.py') 这么运行: MacBook-Air: ...
- python pyc文件是啥_什么是.pyc文件
Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在. 如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊! 为了防止其他学习Pyt ...
- python pyc文件解析_pyc文件
code object¶ 在我们导入 python 脚本时在目录下会生成个一个相应的 pyc 文件,是pythoncodeobj的持久化储存形式,加速下一次的装载. 文件结构¶ pyc文件由三大部 ...
- python pyc文件作用_Python中pyc文件的用途
什么是pyc文件 pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的 ...
最新文章
- 【Postgresql】触发器某个字段更新时执行,行插入或更新执行
- 一个LabVIEW控件,生成模拟波形效果
- hibernate操作mysql中文乱码
- Linux设置SSH登录(SecureCrt)
- 美国知名华人学者陈刚被捕,他出身贫寒,是一个不折不扣的工作狂
- Collection中list集合的应用常见的方法
- 获取Access表字段类型的自定义函数
- 蓝桥杯第六届国赛JAVA真题----密文搜索
- 【医院综合管理专题】医院服务质量管理制度与规范
- python面试题之如何解决验证码的问题,用什么模块,听过哪些人工打码平台?
- maven生命周期入门
- saltstack安装使用
- rmi 反序列化漏洞_Java反序列化漏洞自动挖掘方法
- freertos demo2: LED blinky queue 发送消息
- USB转TTL、USB转RS232的实现
- 2021年中国异戊酰氯市场趋势报告、技术动态创新及2027年市场预测
- 区块链投资入门篇—骨灰版
- 【机器学习之模型融合】Voting投票法简单实践
- dsf 实现各种排序
- 重拾Activity(三)Activity知识
热门文章
- (6)Air Band数字图像处理基础-对图像进行几何变换
- visio2002无法安装(您必须首先安装Enterprise Architect Edition of visual Studio.Net2003)的解决方案
- oracle安装缺少依赖包,ORACLE 安装提示缺少依赖包
- V型测试,W型测试和H型测试
- 500内部服务器错误。你查找的资源存在问题,因而无法显示
- Flutter 保护你的APP数据安全
- 【Alpha】阶段第十次Scrum Meeting
- 从零开始学习springmvc(5)——Spring国际化和全局异常处理
- 给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(逐句精解)
- regexp_replace