扩展名

在写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调用的扩展。

程序发布的选择

由于笔者基本只在windows平台下考虑发布问题,其他平台均使用源码,故此处讨论基本围绕windows平台。

打包为正常exe程序

如果要公开发布程序,最常见的方式就是打包成exe程序了。打包的好处是使用者不需要考虑Python的运行环境,且也容易被接受。但不好的是一般打包出来的程序都比较大,而且由于是依靠模块打包,有可能出现兼容性等问题。

笔者常用的打包模块是pyinstaller。常用的打包命令是:

pyinstaller -F example.py

-F参数可将代码打包成单个exe程序。

另外如果是GUI程序不需要控制台窗口的还可以加上-w参数:

pyinstaller -w -F example.py

发布编译后的pyc/pyo

如果使用者有python环境,又不想让他们看到源码,就可以选择发布pyc/pyo文件。

直接执行的py文件不会自动生成pyc,需要手动编译一下。单文件编译:

import py_compile
py_compile.compile(r'c:\test.py')

文件夹编译:

import compileall
compileall.compile_dir(dirpath)

编译成pyo:

python -O -m py_compile file.py

如果是GUI程序不需要控制台窗口,可以新建一个pyw文件用于调用主pyc程序。pyw中只需要导入pyc程序即可。

发布源码py

发布源码一般是开源项目使用的,没什么需要说明的。直接发py文件就可以了,只要对方有环境就可以运行。

参考资料:

  1. 《python 文件 .py .pyc .pyw .pyo .pyd》 http://blog.csdn.net/feeltouch/article/details/45952003
  2. 《Python程序的执行原理》http://tech.uc.cn/?p=1932
  3. 《python的pyc和pyo文件》http://gmingzhe.blog.51cto.com/810664/163444
  4. 《运行Python程序(pyc)隐藏DOS窗口的简便方法》https://apfantasy.wordpress.com/2011/02/13/%E8%BF%90%E8%A1%8Cpython%E7%A8%8B%E5%BA%8Fpyc%E9%9A%90%E8%97%8Fdos%E7%AA%97%E5%8F%A3%E7%9A%84%E7%AE%80%E4%BE%BF%E6%96%B9%E6%B3%95/
  5. 《py文件编译为pyc》http://blog.csdn.net/sislcb/article/details/4002414

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

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

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

  2. python程序的扩展名是perl程序的扩展名是_Python 程序扩展名(py, pyc, pyw, pyo, pyd)及发布程序时的选择...

    扩展名 在写Python程序时我们常见的扩展名是py, pyc,其实还有其他几种扩展名.下面是几种扩展名的用法. py py就是最基本的源码扩展名.windows下直接双击运行会调用python.ex ...

  3. Python 常见文件格式 .py .pyc .pyw .pyo .pyd 之间的主要区别

    Python 常见文件格式 .py .pyc .pyw .pyo .pyd 之间的主要区别 Python 是一种面向对象.解释型计算机程序设计语言.Python 语法简洁.清晰,具有丰富和强大的类库. ...

  4. python 文件后缀名 .py .pyc .pyw .pyo .pyd

    pypypy 以 py 扩展名的文件是 Python 源码文件,由 python.exe 解释,可在控制台下运行.可用文本编辑器读写. pycpycpyc 以 pyc 为扩展名的是Python的编译文 ...

  5. 【python】Python 常见文件格式 .py .pyc .pyw .pyo .pyd简介

    文章目录 概览 .py 文件 .pyw 文件 .pyo 文件 .pyd 文件 .pyd文件上手方法 概览 Python([ˈpaɪən])是一种面向对象.解释型计算机程序设计语言.Python语法简洁 ...

  6. Python 常见文件格式 .py .pyc .pyw .pyo .pyd

    转载于此 Python([ˈpaɪθən])是一种面向对象.解释型计算机程序设计语言.Python 语法简洁.清晰,具有丰富和强大的类库. Python源代码遵循 GPL (GNU General P ...

  7. Python各种扩展名(py, pyc, pyw, pyo, pyd)区别

    扩展名 在写Python程序时我们常见的扩展名是py, pyc,其实还有其他几种扩展名.下面是几种扩展名的用法. py py就是最基本的源码扩展名 pyw pyw是另一种源码扩展名,跟py唯一的区别是 ...

  8. Python 各种扩展名(py, pyc, pyw, pyo, pyd)区别

    扩展名 在写Python程序时我们常见的扩展名是py, pyc,其实还有其他几种扩展名.下面是几种扩展名的用法. py py就是最基本的源码扩展名 pyw pyw是另一种源码扩展名,跟py唯一的区别是 ...

  9. Python文件格式 .py .pyc .pyw .pyo .pyd的主要区别

    Python是一种面向对象.解释型计算机程序设计语言.Python 语法简洁.清晰,具有丰富和强大的类库. Python源代码遵循 GPL (GNU General Public License) 协 ...

最新文章

  1. org.springframework.beans.factory.BeanCreationException: Error creating bean with name
  2. 《Effective C#》读书笔记——条目11:理解短小方法的优势C#语言习惯
  3. c++语言表白超炫图形_青少年编程学习之C语言怎么学?现在知道,将来不亏!...
  4. 警惕开源代码库中的安全隐患
  5. 实现option上下移动_JS实现Select的option上下移动的方法
  6. 理论 | 当 Spring Boot 遇上了消息队列......
  7. 【ElasticSearch】ElasticSearch 嵌套查询:如何搜索嵌入的文档
  8. VC++ COleSafeArray VARIANT的使用
  9. 追求知识而非光环:CNN之父LeCun的反内卷人生
  10. 【前端模板之路】二、人肉非智举,让代码帮我们写代码才是王道
  11. 实现汉字的凯撒密码(内容包括:去掉字符串中的转义字符、汉字的unicode转换)
  12. tablepc是什么平板电脑_Tablet PC,这是什么意思?
  13. 谈下论坛和商城的开发项目
  14. Python学习笔记(一)(图灵学院)
  15. 键盘常用键的asii值
  16. java抽象类的继承_Java,如何从抽象类继承方法
  17. python3.7通过itchat方式登录微信给好友发送天气信息
  18. python人力成本数据测算_人力成本分析计算公式大全
  19. c语言计算时钟的夹角不用if,C语言学习笔记——计算时钟的夹角
  20. STM32 ADC多通道规则采样和注入采样

热门文章

  1. 聘请matlab熟练者代写题目
  2. Android 接喜马拉雅电台接口(2)------功能实现篇
  3. MS7024 TV编码器 8、16、24bit数字信号转AV/S-Video
  4. QEMU安装Ubuntu 20.04的完整过程
  5. 转载《分布式任务调度平台XXL-JOB》
  6. java antlr的开发
  7. Java 笔记【前言】
  8. Tor--anonymity network介绍(PPT)
  9. 链路追踪 SkyWalking 源码分析 —— Agent 插件体系
  10. IntelliJ IDEA 2019 激活注册码(可用)截至到5月4号