假如你用python写了个小程序,想给别人用或者给别人演示,但他电脑里没装python、wxpython等,这时候你可以试试py2exe,它是一个将python脚本转换成windows上的可执行程序(*.exe)的工具。安装就不多说了,简单介绍一下使用方法

一般来说,使用py2exe的步骤如下

1. 写一个用于发布程序的设置脚本

如果你有一个名为helloworld.py的python脚本,现在想把它转换为exe可执行程序,可以在helloworld所在目录新建一个setup.py文件(文件名随意),内容如下:

#!/usr/bin/env python
from distutils.core import setup
import py2exe setup(console=["helloworld.py"])

2. 打包命令输入

在终端(Windows里的CMD,Linux里的shell)中输入:

python setup.py py2exe

执行命令后当前目录中有两个文件夹build和dist,其中build中是临时文件,dist中有生成的helloworld.exe文件和必要的库文件,发布时将整个dist目录打包即可。

3. 将控制台程序改成窗体程序

上面的例子是简单的控制台程序,如果要转换的程序是由pygtk、pyqt或wxpython等设计的GUI程序,则需要对setup.py文件进行修改,具体情况如下:

3.1 界面元素全部由python代码生成(区别于使用XRC文件的方式)

这种情况下将上面的setup.py文件中的console=xxx改为windows=xxx即可

3.2 界面元素使用XRC机制设计

这种情况稍微复杂,需要将设计中的*.xrc文件包括到dist目录中,具体方法为修改setup.py为下面这种形式:

from distutils.core import setup
import glob
import py2exe setup(name="test",
windows=["main.py"], #假设设计文件为main.py
data_files=[("",["gui.xrc",]),]
)

上面的setup.py中的data_files=XXX 是要介绍的第三部分内容——指定额外的文件,即如果想在软件发布时包括一些额外必需的文件如icons、images等。这种情况下setup.py文件的写法如下:

from distutils.core import setup
import glob
import py2exe setup(name="test",
windows=["main.py"],
data_files=[("dir1", ["a", "b","c"]),
("dir2",["d", "e", "f"])]
)

上面这个setup.py执行后就会在dist目录中生成dir1、dir2两个字目录,并分别将a、b、c和d、e、f复制到这两个字目录中,明白后再回头看带XRC文件的那个setup.py,很简单吧,就是把gui.xrc包括到dist目录中。

py2exe使用总结的更多相关文章

  1. arcpy+PyQt+py2exe快速开发桌面端ArcGIS应用程序

    前段时间有一个项目,大体是要做一个GIS数据处理工具. 一般的方法是基于ArcObjects来进行开发,因为我对ArcObjects不太熟悉,所以就思考有没有其他简单快速的方法来做. 在查看ArcGI ...

  2. py2exe使用中遇到的几个问题

    问题: 在使用py2exe对所写的python脚本打包成.exe可执行程序时,遇到两个问题: 问题1: RuntimeError: maximum recursion depth exceeded w ...

  3. py2exe使用方法

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

  4. py2exe 打包scipy时遇到的问题

    最近写了个小程序,用PyQt5做的界面,写完之后用py2exe打包成独立的exe文件,运行正常. 后来由于需要,调用SciPy.io.loadmat,改写setup.py,打包之后运行错误,提示: T ...

  5. [Python] py2exe先知其然

    #Hello.py import Tkinter root=Tkinter.Tk() label=Tkinter.Label(root,text="Hello,py2exe!") ...

  6. Windows下利用py2exe生成静默运行的命令行程序

    py2exe是python的第三方库,可以利用它将你的python脚本编译成可执行文件(exe),而在实际的开发过程中生成的dos窗口很影响用户体验,建议按以下方式让exe静默运行. 首先将你的pyt ...

  7. Python打包-py2exe使用

    Py2exe 64位下载地址:http://download.csdn.net/detail/henujyj/8532827 Py2exe 32位下载地址:https://sourceforge.ne ...

  8. python 转 exe -- py2exe库实录

    本文基于windows 7 + python 3.4 把python程序打包成exe,比较好用的库是py2exe 其操作步骤是: --> 编写python程序 --> 再额外编写一个导入了 ...

  9. python+pygame游戏开发之使用Py2exe打包游戏

    最近在用python+pygame 开发游戏,写完以后在分享给朋友玩的时候遇到了很大的问题,只有搭建了环境才能运行python脚本. 这会吓退99%以上的人……所以把我们的游戏打包(注意是打包而不是编 ...

  10. pyqt5 笔记(三)py2exe 实现代码打包exe

    python3.4 安装64位的版本 py2exe 下载地址: https://pypi.python.org/pypi/py2exe/0.9.2.0#downloads cmd——>进入pyf ...

随机推荐

  1. 图论-求有向图的强连通分量(Kosaraju算法)

    求有向图的强连通分量     Kosaraju算法可以求出有向图中的强连通分量个数,并且对分属于不同强连通分量的点进行标记. (1) 第一次对图G进行DFS遍历,并在遍历过程中,记录每一个点的退出顺序 ...

  2. springboot对security的后端配置

    一.Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring ...

  3. WCF中操作的分界于调用顺序和会话的释放

    操作分界 在WCF操作契约的设计中,有时会有一些调用顺序的业务,有的操作不能最先调用,有的操作必须最后调用,比如在从一个箱子里拿出一件东西的时候,必须先要执行打开箱子的操作,而关上箱子的操作应该在一切 ...

  4. LumiSoft.Net 收发邮件

    一:LumiSoft.Net简介 Lumisoft is a software development company specialised in mobile phones and tablets ...

  5. PostFix使用dovecot支持POP3/IMAP收信

    PostFix只能够收发邮件,以及使用SMTP发送邮件,想要使用POP3/IMAP收信的话必须装其他软件,本文通过配置dovecot让邮件服务器支持POP3/IMAP收信.POP3/IMAP是一种收信 ...

  6. 【一】H.264/MPEG-4 Part 10 White Paper 翻译之 Overview of H.264

    翻译版权所有,转载请注明出处~ xzrch@2018.09.14 ------------------------------------------------------------------- ...

  7. @Resource和@Autowired的异同

    相同点: 两者都能做到注入一个Bean. 两者都可应用在Field和Method上面. 两者均为Runtime级别的Retention. 不同点: 使用的场景有差异 @Resource可应用在类(TY ...

  8. Composer指南

    安装 windows中安装Composer 一般来说,windows下安装composer有两种办法,一种是直接下载并运行Composer-Setup.exe,这种方法在中国似乎很难完成安装.另一种就 ...

  9. 多用户在线FTP程序

    项目名:多用户在线FTP程序 一.需求 1.用户加密认证 2.允许同时多用户登录 3.每个用户有自己的家目录 ,且只能访问自己的家目录 4.对用户进行磁盘配额,每个用户的可用空间不同 5.允许用户在f ...

  10. android入门 — Service

    Service完全在后台运行,没有用户界面.使用的时候先创建Service子类,然后在AndroidManifest.xml中进行注册,同时可以通过<intent-filter.../>进 ...