python转exe2
转载自 xiake200704 最终编辑 xiake200704
一、简介
py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。
py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序。py2exe是发布在开源许可证下的。目前只有python2.x的才有对应版本的。
二、安装py2exe
从http://prdownloads.sourceforge.net/py2exe下载并运行与你所安装的Python对应的py2exe版本的installer,这将安装py2exe和相应的例子;这些例子被安装在lib\site-packages\py2exe\samples目录下。
三、py2exe的用法
如果你有一个名为helloworld.py的python脚本,你想把它转换为运行在windows上的可执行程序,并运行在没有安装python的windows系统上,那么首先你应写一个用于发布程序的设置脚本例如mysetup.py,在其中的setup函数前插入语句import py2exe 。
mysetup.py示例如下:
1
2
3
4
5
|
# mysetup.py from distutils.core import setup import py2exe setup(console = [ "helloworld.py" ]) |
console换成windows会打包.pyw文件,不会产生类似cmd的窗口
然后按下面的方法运行mysetup.py:
python mysetup.py py2exe |
上面的命令执行后将产生一个名为dist的子目录,其中包含了helloworld.exe,python24.dll,library.zip这些文件。
如果你的helloworld.py脚本中用了已编译的C扩展模块,那么这些模块也会被拷贝在个子目录中,同样,所有的dll文件在运行时都是需要的,除了系统的dll文件。
dist子目录中的文件包含了你的程序所必须的东西,你应将这个子目录中的所有内容一起发布。
默认情况下,py2exe在目录dist下创建以下这些必须的文件:
- 一个或多个exe文件。
- python##.dll。
- 几个.pyd文件,它们是已编译的扩展名,它们是exe文件所需要的;加上其它的.dll文件,这些.dll是.pyd所需要的。
- 一个library.zip文件,它包含了已编译的纯的python模块如.pyc或.pyo
上面的mysetup.py创建了一个控制台的helloword.exe程序,如果你要创建一个图形用户界的程序,那么你只需要将mysetup.py中的console=["helloworld.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 = [ "helloworld.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被建造,你不需要它们的话你可以简单的删除它们。
另:一个标准的setup.py的代码如下:
#!/usr/bin/python #filename:setup.py #coding=utf-8 from distutils.core import setup import py2exe includes = [ "encodings" , "encodings.*" ] #要包含的其它库文件 options = { "py2exe" : { "compressed" : 1 , #压缩 "optimize" : 2 , "ascii" : 1 , "includes" :includes, "bundle_files" : 1 #所有文件打包成一个exe文件 } } setup( version = "XXX" , description = "XXX" , name = "XXX" , options = options, zipfile = None , #不生成library.zip文件 console = [ { "script" : "hello.py" , "icon_resources" : [( 1 , "hello.ico" )] } ] #源文件,程序图标 ) |
python转exe2的更多相关文章
- Python入门基础教程-准备工作
作为一名Python的忠实爱好者,在Python的学习过程中趟过了很多坑.不论是在基础语法.爬虫.可视化的学习,亦或是在数据挖掘的项目开展中,整个过程有痛苦也有收获,有捶胸顿足也有仰天长笑.所以在以后 ...
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- 使用Python保存屏幕截图(不使用PIL)
起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...
- Python编码记录
字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...
- Apache执行Python脚本
由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...
随机推荐
- XCode5 使用AutoLayout情况下改变控件的 方法
[self.viewButtonsetTranslatesAutoresizingMaskIntoConstraints:NO]; //[self.view addConstraint:[NSLayo ...
- Linux-SSH远程登陆
SSH是什么 Secure Shell 安全外壳协议 建立在应用层基础上的安全协议 可靠.转为远程登陆会话和其他网络提供安全性的协议 SSH客户端是用于多种平台 服务器安装SSH服务 安装:yum i ...
- pandas知识点(处理缺失数据)
pandas使用浮点值NaN表示浮点和非浮点数组中的缺失数据: In [14]: string_data = Series(['aardvark','artichoke',np.nan,'avocad ...
- Flask初学者:g对象,hook钩子函数
Flask的g对象 作用:g可以可以看作是单词global的缩写,使用“from flask import g”导入,g对象的作用是保存一些在一次请求中多个地方的都需要用到的数据,这些数据可能在用到的 ...
- ICSharpCode.SharpZipLib.dll
using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.SharpZipLib.Zip; namespace { /// <summ ...
- Linux系统自启动脚
只需编辑/etc/init.d/rc.local文件,在最后加上你的脚本即可. 比如:我已经编写了一个脚本shell.sh,存放在/home/mars704/Desktop/ 下面在终端输入 gedi ...
- redis配置密码 redis常用命令
redis配置密码 1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 [plain] view plain copy #requi ...
- Python高级主题:Python ABC(抽象基类)
#抽象类实例 作用统一规范接口,降低使用复杂度.import abcclass Animal(metaclass = abc.ABCMeta): ##只能被继承,不能实例化,实例化会报错 @abc.a ...
- 谋哥:《App自推广》连载2直立人行走迁徙
[谋哥每天一干货,第六十九篇] 前篇说到声音在远古时代,是一个神奇的东西,它能够很快地把信息传播到其他地方,突破了短距离.然而能人的后代直立人学会了直立行走,他们开始走出非洲,到达遥远的中东.中国,还 ...
- 实时视频h5
http://www.cnblogs.com/dotfun/p/4286878.html