关闭

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

8984人阅读 评论(1) 收藏 举报
分类:

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++的综合进化版,不仅

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


5
0
查看评论

python转成pyd方法

版本:python 2.7.12 Cython安装 利用pip安装: pip install Cython --install-option="--no-cython-compile" 或者自己下载安装:https://pypi.python.org/pypi/Cytho...
  • kalulioo
  • kalulioo
  • 2016-09-01 16:46
  • 540

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

Python import .pyd文件时会搜索sys.path列表中的路径 运行 import xxx.pyd 1. 'ImportError: No module named xxx' 可能是xxx.pyd所在路径不在sys.path中。 解决方法:import之前用s...
  • xyk198307
  • xyk198307
  • 2015-04-27 22:00
  • 4389

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

1、需要说明的是Pyd文件其实就是dll,为了python能正常调用,这个dll规定了导出函数的一些规则。下面代码简单演示使用c++创建一个函数,并使用Python调用该模块。 (注意需要添加python的head路径和lib路径,具体操作,可见下面的视频链接) #include #include...
  • pengyancai
  • pengyancai
  • 2017-01-17 22:23
  • 3108

编译C代码为python模块(pyd)

做个备份,免得将来忘了 swig –python example.i python setup.py build_ext --compiler=mingw32 –inplace   #setup.py from distutils.core import setup, Exten...
  • fxsjy
  • fxsjy
  • 2009-10-19 08:44
  • 3420

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

不使用boost.python库来直接构建dll的话比较繁琐,下面实例是借助boost库实现python对C、C++的调用 1 首先确定已经安装python和boost库,本例测试环境是python2.7,boost_1_54_0 ,在vs平台下实现 2 vs建立dll工程,vs下boost库的环境...
  • lanbing510
  • lanbing510
  • 2013-09-30 16:09
  • 7302

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

py是源文件,pyc是源文件编译后的文件,pyo是源文件优化编译后的文件,pyd是其他语言写的python库 python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行,相对于py文件来说,编译成pyc和pyo本质上和py没有太大区别,...
  • willhuo
  • willhuo
  • 2015-11-17 13:59
  • 10634

python用opencv的包cv2.pyd

  • 2017-12-24 16:37
  • 29.77MB
  • 下载

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

在写Python程序时我们常见的扩展名是py, pyc,其实还有其他几种扩展名。下面是几种扩展名的用法。
  • chroming
  • chroming
  • 2016-08-01 10:18
  • 9068

python.exe和pythonw.exe的区别(区分.py、.pyw、.pyc文件)

Windows系统搭建好Python的环境后,进入Python的安装目录,大家会发现目录中有python.exe和pythonw.exe两个程序。如下图所示: 它们到底有什么区别和联系呢? 概括说明一下: python.exe在运行程序的时候,会弹出一个黑色的控制台窗口(也叫命令行窗口...
  • pythonw
  • pythonw
  • 2017-07-05 14:18
  • 4550

python中.py和.pyw文件的区别

以下是摘录自百度问题的答案: 严格来说,它们之间的不同就只有一个:视窗运行它们的时候调用不同的执行档案。 视窗用 python.exe 运行 .py ,用 pythonw.exe 运行 .pyw 。 这纯粹是因为安装视窗版 Python 时,扩展名 .py 自动被登记为用 python.ex...
  • qingyang1014
  • qingyang1014
  • 2014-08-15 22:38
  • 3671
    个人资料
    • 访问:491910次
    • 积分:7196
    • 等级:
    • 排名:第3729名
    • 原创:210篇
    • 转载:259篇
    • 译文:2篇
    • 评论:19条
    博客专栏
    最新评论