python 文件 .py .pyc .pyw .pyo .pyd

原创 2015年05月24日 14:59:50

DLL文件动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。打不开,不过可以使用反汇编;PYD是一种PYTHON动态模块。实质上还是dll文件,只是改了后缀为PYD,pyd: 扩展模块,一般用C或C++编写,其实可以说是一种更优秀的D语言编写的。

源自:http://my.oschina.net/renwofei423/blog/17404
通常认为,Python是一种解释性的语言,但是这种说法是不正确的,实际上,Python在执行时,首先会将.py文件中的源代码编译成

Python的byte code(字节码),然后再由Python Virtual Machine来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET

是一致的。然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的

Virtual Machine。这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大,更拽,而是说

和Java或.NET相比,Python的Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次

更高的Virtual Machine。
Python应该提供一种机制,保存编译的中间结果,即byte code,或者更准确地说,保存PyCodeObject。事实上,Python确实提供
了这样一种机制——Pyc文件。
在执行一个.py文件中的源代码之后,Python并不会自动生成与该.py文件对应的.pyc文件。我们需要自己触发Python来创建pyc文件。

下面我们提供一种使Python创建pyc文件的方法,其实很简单,就是利用Python的import机制。
在Python运行的过程中,如果碰到import abc,这样的语句,那么Python将到设定好的path中寻找abc.pyc或abc.dll文件,如果没有这

些文件,而只是发现了abc.py,那么Python会首先将abc.py编译成相应的PyCodeObject的中间结果,然后创建abc.pyc文件,并将中间

结果写入该文件。接下来,Python才会对abc.pyc文件进行一个import的动作,实际上也就是将abc.pyc文件中的PyCodeObject重新在内

存中复制出来

下面是与python相关的文件扩展名,源自:http://proupy.com/news/33


首先是我们最常见的.py文件。以.py扩展名的文件是源代码文件,由python.exe解释,可在控制台下运行。当然也可以用文本编辑器进

行修改。


接下来介绍的是.pyc文件。以.pyc为扩展名的是python的编译文件。.pyc文件是不能够用文本编辑器之类的进行编辑的,但是同样它的

优点在于.pyc文件的执行速度快于.py文件。至于为什么要有.pyc文件,这个需求太明显了,因为py文件是可以直接看到源码的,如果

你是开发商业软件的话,不可能把源码也泄漏出去吧?所以就需要编译为pyc后,再发布出去。


再接下来介绍的是.pyw文件。很多使用过.pyc文件的同学都知道,.pyc文件执行的时候桌面会出现黑糊糊的窗口,有的时候这是十分难

看的。于是.pyw文件就应运而生了。.pyw文件与.pyc文件本质上没有什么区别,只是.pyw执行的时候不会出现黑窗口。.pyw 格式主要

是被设计来运行开发完成的纯图形界面程序的。 纯图形界面程序的用户不需要看到控制台窗口。值得一提的是,开发纯图形界面程序

的时候,你可以暂时把 .pyw 改成 .py , 以便运行时能调出控制台窗口,看到所有错误信息,方便进行修改。


接下来介绍的是.pyo文件。pyo是优化编译后的程序。 python -O 源文件即可将源程序编译为pyo文件。同样.pyo文件也是不能用文

本编辑器编辑的。


最后介绍的是.pyd文件。.pyd文件并不是使用python编写而成,.pyd文件一般是其他语言编写的python扩展模块。(之前又在网上看到

过有关解释,.pyd文件是用D语言按照一定的格式编写,并处理成二进制文件。那么什么是D语言呢??它是c/c++的综合进化版,不仅

具有二者的全部优点,而且整体性能更佳,但是其抽象程度高。)


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Python 程序扩展名(py, pyc, pyw, pyo, pyd)及发布程序时的选择

在写Python程序时我们常见的扩展名是py, pyc,其实还有其他几种扩展名。下面是几种扩展名的用法。...

Python import .pyd 可能遇到路径的问题

Python import .pyd文件时会搜索sys.path列表中的路径 运行 import xxx.pyd 1. 'ImportError: No module named xxx' ...

Python和C|C++的混编(一):Python调用C、C++---Boost库

不使用boost.python库来直接构建dll的话比较繁琐,下面实例是借助boost库实现python对C、C++的调用 1 首先确定已经安装python和boost库,本例测试环境是python2...

使用C++创建Pyd文件扩展Python模块

1、需要说明的是Pyd文件其实就是dll,为了python能正常调用,这个dll规定了导出函数的一些规则。下面代码简单演示使用c++创建一个函数,并使用Python调用该模块。 (注意需要添加pyth...

python py、pyc、pyo、pyd文件区别

py是源文件,pyc是源文件编译后的文件,pyo是源文件优化编译后的文件,pyd是其他语言写的python库 python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo...
  • willhuo
  • willhuo
  • 2015年11月17日 13:59
  • 8426

python下编译py成pyc和pyo

其实很简单, 用 python -m py_compile file.py python -m py_compile /root/src/{file1,file2}.py 编译成pyc文件...

python中pyc和pyo的作用

pyc文件,是python编译后的字节码(bytecode)文件。只要你运行了py文件,python编译器就会自动生成一个对应的pyc字节码文件。这个pyc字节码文件,经过python解释器,会生成机...

Nodejs学习笔记之从bodyParse来看app.use()

前言 最近一直在学习慕课网上的express+mongodb建站课程,老师用了很多模块,以前从未见过,因此慢慢看API文档,调代码,试图把每一个框架都搞懂。 前一篇写了express一些用法,这一...

python的GUI编程(Tkinter库)(三)

消息(message)消息控件提供了显示多行文本的方法,且可以设置字体和背景颜色 示例:from Tkinter import * root=Tk() root.title('top') Messa...
  • for_luo
  • for_luo
  • 2017年06月14日 11:32
  • 236

python .py .pyc .pyw 文件有什么区别

以下为参考链接,整理为方便自己学习 http://forum.digitser.cn/thread-1758-1-1.html.py 文件 以 .py 作扩展名的文件是 Python 源代码文件,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python 文件 .py .pyc .pyw .pyo .pyd
举报原因:
原因补充:

(最多只允许输入30个字)