Python使用py2exe打包程序介绍


Posted in Python onNovember 20, 2014

一、简介

py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。

py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序。py2exe是发布在开源许可证下的。

二、安装py2exe

从http://prdownloads.sourceforge.net/py2exe下载并运行与你所安装的Python对应的py2exe版本的 installer,这将安装py2exe和相应的例子;这些例子被安装在lib\site-packages\py2exe\samples目录下。

三、py2exe的用法

如果你有一个名为myscript.py的python脚本,你想把它转换为运行在windows上的可执行程序,并运行在没有安装python的 windows系统上,那么首先你应写一个用于发布程序的设置脚本例如mysetup.py,在其中的setup函数前插入语句import py2exe 。
mysetup.py示例如下:

# mysetup.py 

from distutils.core import setup 

import py2exe
setup(console=["myscript.py"])

然后按下面的方法运行mysetup.py:
python mysetup.py py2exe

上面的命令执行后将产生一个名为dist的子目录,其中包含了myscript.exe,python24.dll,library.zip这些文件。

如果你的myscript.py脚本中用了已编译的C扩展模块,那么这些模块也会被拷贝在个子目录中,同样,所有的dll文件在运行时都是需要的,除了系统的dll文件。

dist子目录中的文件包含了你的程序所必须的东西,你应将这个子目录中的所有内容一起发布。

默认情况下,py2exe在目录dist下创建以下这些必须的文件:

1、一个或多个exe文件。
2、python##.dll。
3、几个.pyd文件,它们是已编译的扩展名,它们是exe文件所需要的;加上其它的.dll文件,这些.dll是.pyd所需要的。
4、一个library.zip文件,它包含了已编译的纯的python模块如.pyc或.pyo
上面的mysetup.py创建了一个控制台的myscript.exe程序,如果你要创建一个图形用户界的程序,那么你只需要将mysetup.py中的console=["myscript.py"]替换为windows=["myscript.py"]既可。

py2exe一次能够创建多个exe文件,你需要将这些脚本文件的列表传递给console或windows的关键字参数。如果你有几个相关联的脚本,那么这是很有用的。

运行下面个命令,将显示py2exe命令的所有命令行标记。

python mysetup.py py2exe --help

四、指定额外的文件

一些应用程序在运行时需要额外的文件,诸如配置文件、字体、位图。

如果在安装脚本中用data_files可选项指定了那些额外的文件,那么py2exe能将这些文件拷贝到dist子目录中。data_files应包含一个元组(target-dir, files)列表,其中的files是这些额外的文件的列表。

示例如下:

# mysetup.py 

from distutils.core import setup 

import glob 

import py2exe
setup(console=["myscript.py"], 

data_files=[("bitmaps", 

["bm/large.gif", "bm/small.gif"]), 

("fonts", 

glob.glob("fonts\\*.fnt"))], 

)

说明:data_files选项将创建一个子目录dist\bitmaps,其中包含两个.gif文件;一个子目录dist\fonts,其中包含了所有的.fnt文件。

五、Windows NT services

你可以通过传递一个service关键字参数给setup函数来建造Windows NT services
,这个service参数的值必须是一个Python模块名(包含一service类)的列表。

示例如下:

# mysetup.py 

from distutils.core import setup 

import py2exe
setup(service=["MyService"])

所建造的可执行的service是可以通过在其后跟一定的命令行参数标记来自行安装和卸载的。你可以通过在这个可执行的service(exe)后跟一-help参数来得到更多的帮助。

六、COM servers

你可以通过传递一个com_server 关键字参数给setup函数来建造Windows NT services ,这个service参数的值必须是一个Python模块名(包含一个或多个COM server 类)的列表。

示例如下:

# mysetup.py 

from distutils.core import setup 

import py2exe
setup(com_server=["win32com.server.interp"])

默认情况下,DLL和EXE servers被建造,你不需要它们的话你可以简单的删除它们。

Python 相关文章推荐
详细讲解用Python发送SMTP邮件的教程
Apr 29 Python
Python中的默认参数详解
Jun 24 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
Python subprocess模块功能与常见用法实例详解
Jun 28 Python
Python文件监听工具pyinotify与watchdog实例
Oct 15 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
python获取点击的坐标画图形的方法
Jul 09 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
Mar 02 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
Python包资源下载路径报404解决方案
Nov 05 Python
Python实现的tab文件操作类分享
Nov 20 #Python
Python实现的ini文件操作类分享
Nov 20 #Python
Python中列表、字典、元组、集合数据结构整理
Nov 20 #Python
python有证书的加密解密实现方法
Nov 19 #Python
Python采用socket模拟TCP通讯的实现方法
Nov 19 #Python
Python实现向QQ群成员自动发邮件的方法
Nov 19 #Python
python端口扫描系统实现方法
Nov 19 #Python
You might like
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
Javascript var变量隐式声明方法
2009/10/19 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
Python二分查找详解
2015/09/13 Python
Python实现统计代码行的方法分析
2017/07/12 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
WxPython建立批量录入框窗口
2019/02/27 Python
python3安装crypto出错及解决方法
2019/07/30 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
行政部总经理岗位职责
2014/01/04 职场文书
数控个人求职信范文
2014/02/03 职场文书
小学校长汇报材料
2014/08/20 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书