pyc文件由谁编译
1. python .pyc是什么文件
一、什么是pyc文件?
pyc文件就是py程序编译后得到的文件,是一种二进制文件。一般是这样的:
pyc文件经过python解释器最终会生成机器码运行。所以pyc文件是可以跨平台部署的,类似Java的.class文件。如果py文件改变,也会重新生成pyc文件。
相关推荐:《Python视频教程》
二、pyc文件怎么生成的?
1、被当做模块调用的时候会自动生成pyc文件。
一般是python脚本被当做模块被其他脚本文件调用时,就会产生pyc文件,举个例子:
如果你写了一个脚本文件image.py是用来生成验证码的,如果你在index.py文件中想引用这个脚本的功能,就需要通过import导入image.py文件,然后,如果你运行index.py文件,那就会在image.py文件所在的路径生成一个image.pyc文件。
2、对于py文件,可以执行下面命令来生成pyc文件。
3、通过代码来生成pyc文件。
三、为什么要生成pyc文件?
1、python为了提高运行效率也会进行编译。
python是解释型语言,运行的时候需要通过python解释器编译,所以先编译出pyc文件后,可以节省编译这一步的耗时时间。
2、不想让源码泄露。
因为py文件是可以直接看到源码的,对于一般的商业公司来说,这有点不妙,因为pyc文件可以独立于py文件,删除py文件也不会出错。这就是太好了,只需要编译成pyc文件再发布出去就好了。
2. PYC是什么意思
pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的python是无法执行的。
不知你的PYC是在何种情境下看到的PYC····
3. Python代码是编译执行还是解释执行
PYTHON是一种解释型的脚本语言,所以是解释执行的
4. python解释器
python解释器的介绍:
解释器由一个编译器和一个虚拟机构成,编译器负责将源代码转换成字节码文件,而虚拟机负责执行字节码。
所以,解释型语言其实也有编译过程,只不过这个编译过程并不是直接生成目标代码,而是中间代码(字节码),然后再通过虚拟机来逐行解释执行字节码。
计算机的大脑是CPU, 中文名叫中央处理器,它仍然不能直接处理 Python 语言。CPU 只能直接处理机器指令语言,那是一种由0和1数字组成的语言,这是一种我们人很难直接写出来的语言。
所以,我们需要一个翻译,把Python语言翻译成 计算机CPU 能听懂的机器指令语言,这样计算机才能按照 我们的Python程序的要求去做事。.py结尾的文件需要解释器去运行执行。
执行过程原理:
1.执行 python XX.py 后,将会启动 Python 的解释器。
2.python解释器的编译器会将.py源文件编译(解释)成字节码生成PyCodeObject字节码对象存放在内存中。
3.python解释器的虚拟机将执行内存中的字节码对象转化为机器语言,虚拟机与操作系统交互,使机器语言在机器硬件上运行。
4.运行结束后python解释器则将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
Python解释器执行程序的三个阶段:
第一步:先启动python3解释器。
第二步:Python3解释器就像一个文本编辑器一样将文件python3 D: est.py从硬盘读入内存。
第三步:Python3解释器解释执行文件代码。
只有第三阶段才识别python的语法。
5. python怎么打开pyc文件
关于PyCodeObject和pyc文件:在硬盘上看到的pyc文件,其实PyCodeObject才是Python编译器真正编译成的结果。当python程序运行时,编译的结果是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。所以,我们可以说pyc文件其实是PyCodeObject的一种持久化保存方式。
你指的是编辑pyc还是导入pyc?
pyc是很难直接编辑的,最好是修改原来的py文件,再生产pyc。
导入pyc:假设你的源代码文件是model.py,经过Python37解释器运行后会自动生成modle.cpython-37.pyc。如果要在main.py中导入modle.cpython-37.pyc,需要把文件名中的cpython-37去掉,变成model.pyc,再放到main.py所在的文件夹里,在main.py中添加“import model”,即可导入model。
6. pyc鏄浠涔堟剰镐
pyc鏄浠涔堟剰镐濓纻
1. pyc镄勫畾涔夊拰姒傝堪
pyc鏄疨ython缂栬疟鍣ㄥ皢婧愪唬镰佺紪璇戠敓鎴愮殑涓闂存枃浠剁殑镙煎纺锛屽叾涓昏佷綔鐢ㄦ槸鎻愰珮绋嫔簭镄勮繍琛屾晥鐜囥
Python鏄涓绉嶈В閲婂瀷璇瑷锛屽叾浠g爜闇瑕佽瑙i喷鍣ㄩ愯岃В閲婃墽琛屻傝岀紪璇戝瀷璇瑷鍒欐槸灏嗘簮浠g爜缂栬疟鐢熸垚链哄櫒镰侊纴鐩存帴鍦–PU涓婅繍琛屻备负浜嗘彁楂楶ython鑴氭湰镄勬墽琛屾晥鐜囷纴Python鍦ㄨВ閲婃墽琛岀殑锘虹涓婏纴杩樻彁渚涗简灏嗘簮浠g爜缂栬疟涓簆yc鏂囦欢镄勫姛鑳姐
2. pyc鏂囦欢镄勭敓鎴愬拰浣灭敤
褰扬ython瑙i喷鍣ㄦ墽琛屼竴涓狿ython鑴氭湰镞讹纴瀹冧细棣栧厛妫镆ユ槸钖﹀瓨鍦ㄥ瑰簲镄刾yc鏂囦欢銆傚傛灉瀛桦湪涓旀渶钖庝慨鏀规椂闂翠笌鐩稿簲镄勬簮鏂囦欢涓镊达纴瑙i喷鍣ㄤ细镊锷ㄥ姞杞絧yc鏂囦欢锛屼粠钥屽姞蹇鑴氭湰镄勬墽琛岄熷害銆傚傛灉涓嶅瓨鍦ㄥ瑰簲镄刾yc鏂囦欢鎴杙yc鏂囦欢宸茬粡杩囨湡锛屽垯浼氶吨鏂扮敓鎴愩
鐢变簬pyc鏂囦欢鏄缂栬疟钖庣殑涓闂存枃浠讹纴鍏惰繍琛岄熷害姣摈ython婧愪唬镰佽佸揩锛屽洜姝ゅ彲浠ユ彁楂楶ython绋嫔簭镄勬墽琛屾晥鐜囥
3. pyc鏂囦欢镄勭己镣瑰拰娉ㄦ剰浜嬮”
灏界pyc鏂囦欢鍙浠ユ彁楂楶ython鑴氭湰镄勬墽琛屾晥鐜囷纴浣嗘槸涔熷瓨鍦ㄧ潃涓浜涚己镣瑰拰娉ㄦ剰浜嬮”锛
pyc鏂囦欢鍙链夊湪鐩稿悓镄勬搷浣灭郴缁熷拰Python鐗堟湰闂存槸鍙鍏煎圭殑锛屽逛簬涓嶅悓镄勬搷浣灭郴缁熷拰Python鐗堟湰锛岄渶瑕侀吨鏂扮敓鎴恜yc鏂囦欢銆
pyc鏂囦欢铏界劧鍙浠ュ炲姞Python绋嫔簭镄勮繍琛岄熷害锛屼絾鏄涔熶细瀵艰嚧鍗犵敤镟村氱殑纾佺洏绌洪棿銆
pyc鏂囦欢鍙鑳戒细娉勯湶Python婧愪唬镰佺殑淇℃伅锛屽洜姝ゅ湪鍙戝竷Python绋嫔簭镞堕渶瑕佹敞镒忋
4. 濡备綍绂佺敤pyc鏂囦欢镄勭敓鎴愬拰锷犺浇
鍦ㄦ煇浜涙儏鍐典笅锛屾垜浠鍙鑳介渶瑕佺佺敤pyc鏂囦欢镄勭敓鎴愬拰锷犺浇銆备緥濡傦纴褰撶▼搴忎腑镄勪竴浜涙ā鍧椾细锷ㄦ佷慨鏀规椂锛岄吨鏂板姞杞絧yc鏂囦欢鍙鑳戒细瀵艰嚧绋嫔簭鍑虹幇寮傚父銆
鍙浠ラ氲繃璁剧疆Python镄勭幆澧冨彉閲忔潵瀹炵幇绂佺敤pyc鏂囦欢镄勭敓鎴愬拰锷犺浇銆
绂佺敤pyc鏂囦欢镄勭敓鎴愩傚湪Python瑙i喷鍣ㄥ惎锷ㄦ椂锛岃剧疆PYTHONNOUSERSITE鐜澧冨彉閲忕殑鍊间负1銆
绂佺敤pyc鏂囦欢镄勫姞杞姐傚湪Python瑙i喷鍣ㄥ惎锷ㄦ椂锛岃剧疆PYTHONDONTWRITEBYTECODE鐜澧冨彉閲忕殑鍊间负1銆
5. 镐荤粨
pyc鏂囦欢鏄疨ython缂栬疟鍣ㄥ皢婧愪唬镰佺紪璇戠敓鎴愮殑涓闂存枃浠剁殑镙煎纺锛屽叾涓昏佷綔鐢ㄦ槸鎻愰珮绋嫔簭镄勮繍琛屾晥鐜囥备笉杩囷纴pyc鏂囦欢涔熷瓨鍦ㄤ竴浜涚己镣瑰拰娉ㄦ剰浜嬮”锛屼緥濡备笉钖岀殑镎崭綔绯荤粺鍜孭ython鐗堟湰闂翠笉鍏煎癸纴鍗犵敤镟村氱殑纾佺洏绌洪棿绛夈傚傛灉闇瑕佺佺敤pyc鏂囦欢镄勭敓鎴愬拰锷犺浇锛屽彲浠ラ氲繃璁剧疆Python镄勭幆澧冨彉閲忔潵瀹炵幇銆
7. 什么是pyc文件
pyc文件就是 Python 程序编译后得到的字节码文件 (py->pyc).
pyc文件一般由3个部分组成:
最开始4个字节是一个Maigc int, 标识此pyc的版本信息, 不同的版本的 Magic 都在 Python/import.c 内定义
接下来四个字节还是个int,是pyc产生的时间(1970.01.01到产生pyc时候的秒数)
接下来是个序列化了的 PyCodeObject(此结构在 Include/code.h 内定义),序列化方法在 Python/marshal.c 内定义
8. python文件后缀名是什么
Python程序的扩展名有.py、.pyc、.pyo和.pyd。.py是源文件,.pyc是源文件编译后的文件,.pyo是源文件优化编译后的文件,.pyd是其他语言写的Python库。
在写Python程序时我们常见的扩展名是py,pyc,其实还有其他几种扩展名。以下是详细内容介绍:
py:py就是最基本的源码扩展名。Windows下直接双击运行会调用Python.exe执行。
pyw:pyw是另一种源码扩展名,跟py唯一的区别是在Windows下双击pyw扩展名的源码会调用Pythonw.exe执行源码,这种执行方式不会有命令行窗口。主要用于GUI程序发布时不需要看到控制台信息的情况。
pyc:在执行Python代码时经常会看到同目录下自动生成同名的pyc文件。这是Python源码编译后的字节码,一般会在代码执行时自动生成你代码中引用的py文件的pyc文件。这个文件可以直接执行,用文本编辑器打开也看不到源码。
pyo:pyo是跟pyc类似的优化编码后的文件。
pyd:pyd并非从Python程序生成,而是其他语言写成的可以被Python调用的扩展。