Python+pyc文件编译和运行

您所在的位置:网站首页 python源代码编译 Python+pyc文件编译和运行

Python+pyc文件编译和运行

2024-01-17 09:12| 来源: 网络整理| 查看: 265

 有时候在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()具体每个参数是干吗用的,可以使用print py_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 from GL import GL ModuleNotFoundError: No module named 'Gl' 原因就是GL.py没有转成Gl.pyc文件。 将Gl.py转换后,执行命令, ''' D:\A\B\__pycache__>python Test.pyc Element Delta h Max error Rate 5 0.2 1.658E-03 10 0.1 4.338E-04 1.93467 20 0.05 1.080E-04 2.00643 40 0.025 2.697E-05 2.00143 80 0.0125 6.747E-06 1.99889 D:\A\B\__pycache__>


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3