python教程之用py2exe将PY文件转成EXE文件


Posted in Python onJune 12, 2014

一、简介

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和GO语言实现的消息摘要算法示例
Mar 10 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
对Django 转发和重定向的实例详解
Aug 06 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
python列表推导式入门学习解析
Dec 02 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
PyQt5实现登录页面
May 30 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
Python中Selenium模块的使用详解
Oct 09 Python
python 带时区的日期格式化操作
Oct 23 Python
Python struct模块解析
Jun 12 #Python
深度剖析使用python抓取网页正文的源码
Jun 11 #Python
python k-近邻算法实例分享
Jun 11 #Python
浅析python 内置字符串处理函数的使用方法
Jun 11 #Python
python使用正则表达式检测密码强度源码分享
Jun 11 #Python
Python查看多台服务器进程的脚本分享
Jun 11 #Python
Python SQLite3数据库操作类分享
Jun 10 #Python
You might like
用缓存实现静态页面的测试
2006/12/06 PHP
Php获取金书网的书名的实现代码
2010/06/11 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
python文件写入实例分析
2015/04/08 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
美国汽车交易网站:Edmunds
2016/08/17 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
入学申请自荐信范文
2014/02/26 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
干部作风建设工作总结
2014/10/29 职场文书
2019年工作总结范文
2019/05/21 职场文书