本文基于windows 7 + python 3.4

把python程序打包成exe,比较好用的库是py2exe

其操作步骤是:

--> 编写python程序

--> 再额外编写一个导入了py2exe的python脚本(不妨如:setup.py)存在同一目录下

--> 运行这个脚本,打包生成的exe文件保存在一个dist目录下

三个例子:

1.命令行

2.GUI (tkinter)

3.GUI (pyqt5)

1. 命令行

# hello.py

print('你好,世界!')
# setup.py

from distutils.core import setup
import py2exe
import sys #this allows to run it with a simple double click.
sys.argv.append('py2exe') py2exe_options = {
"compressed": 1,
"optimize": 2,
"ascii": 0,
"bundle_files": 1, # 其中bundle_files有效值为:
# 3 (默认)不打包。
# 2 打包,但不打包Python解释器。
# 1 打包,包括Python解释器。 setup(
name = 'console demo',
version = '1.0',
console = ['hello.py',], # console 命令行执行程序
# windows 窗口执行程序
zipfile = None,
options = {'py2exe': py2exe_options}
)

现在有两个文件了

再进到目录运行上面这个setup.py脚本(亦可双击运行该脚本)

然后发现多了一个dist目录

可以发现dist目录下生成了一个hello.exe文件

再在命令行下执行hello.exe

2. GUI (tkinter)

# hello.py

import tkinter as tk

root = tk.Tk()

tk.Label(root, text="你好,世界!").pack(ipadx=100, ipady=50)

root.mainloop()
# setup.py

from distutils.core import setup
import py2exe
import sys #this allows to run it with a simple double click.
sys.argv.append('py2exe') py2exe_options = {
"compressed": 1,
"optimize": 2,
"ascii": 0,
"bundle_files": 2, # 修改:2(打包,但不打包Python解释器) setup(
name = 'tk demo',
version = '1.0',
windows = ['hello.py',], # 修改:windows
zipfile = None,
options = {'py2exe': py2exe_options}
)

说明:

对tkinter打包, "bundle_files" 必须为 2,若是1会报错

进到目录运行上面这个setup.py脚本

可以发现dist目录下生成了一个hello.exe文件和另外几个dll文件

双击运行,出现窗口

3. GUI (pyqt5)

# hello.py
from PyQt5 import QtWidgets, QtCore, QtGui # 不管是否用到,只要是打包成exe,都要导入 import sys app = QtWidgets.QApplication(sys.argv) root = QtWidgets.QWidget()
root.resize(200,100)
QtWidgets.QLabel(root, text='你好,世界!')
root.show() sys.exit(app.exec_())

说明:不管是否用到,都要导入 from PyQt5 import QtWidgets, QtCore, QtGui

# setup.py

from distutils.core import setup
import py2exe
import sys #this allows to run it with a simple double click.
sys.argv.append('py2exe') py2exe_options = {
"includes": ["sip"], # PyQt5专有
#"dll_excludes": ["MSVCP90.dll",], # 鱼友论坛说这句必须有,我的没有也可以
"compressed": 1,
"optimize": 2,
"ascii": 0,
"bundle_files": 1, #这里还是1
} setup(
name = 'pyqt5 hello',
version = '1.0',
windows = ['hello.py',], # 窗口执行 # PyQt5专有
data_files=[("",
[r"C:\Python34\Lib\site-packages\PyQt5\libEGL.dll"]),
("platforms",
[r"C:\Python34\Lib\site-packages\PyQt5\plugins\platforms\qwindows.dll"])],
zipfile = None,
options = {'py2exe': py2exe_options}
)

说明:对于pyqt5,下面两个是必须的:

①:"includes": ["sip"]
②:data_files=[("",
[r"C:\Python34\Lib\site-packages\PyQt5\libEGL.dll"]),
("platforms",
[r"C:\Python34\Lib\site-packages\PyQt5\plugins\platforms\qwindows.dll"])]

进到目录运行上面这个setup.py脚本

可以发现dist目录下生成了一个hello.exe文件和另外几个dll文件

双击运行,出现窗口

python 转 exe -- py2exe库实录的更多相关文章

  1. py2exe把python程序转换exe

    1.首先下载py2exe:https://sourceforge.net/projects/py2exe/ 2.假设要打包的python 文件放在C:\packet路径下 如 果你有一个名为myscr ...

  2. python打包成exe(py2exe)

    对比了几个打包工具,发现py2exe更好用一点,一个命令就可以. 1.获取 http://prdownloads.sourceforge.net/py2exe 下载python版本对应的.直接下载然后 ...

  3. 打包python到exe

    #!/usr/bin/python # -*- coding:utf-8 -*- import distutils import py2exe from distutils.core import s ...

  4. Python打包EXE神器 pyinstaller

    最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...

  5. [python学习笔记] py2exe 打包

    遇坑 之前经过折腾,pyinstaller打包文件可以在别的windows7上运行.但是,mfk, 客户说是xp系统.崩溃 使用pyinstaller各种折腾,打包出来的依然是不是有效的win32程序 ...

  6. Python测试 ——开发工具库

    Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...

  7. Python编译exe

    有几种办法,选择py2exe,从pip安装,还不行,下载看起来都比较老,还是在csdn上下载了一个64位版本for2.7的 http://download.csdn.net/download/henu ...

  8. python制作exe可执行文件的方法---使用pyinstaller

    python制作exe可执行文件的方法---使用pyinstaller   python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinsta ...

  9. python调用.net动态库

    # python调用.net动态库 ### pythonnet简介------------------------------ pythonnet是cpython的扩展- pythonnet提供了cp ...

随机推荐

  1. oc 字符串

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  2. 将struts源码导入eclipse

    预制条件和spring源码导入eclipse中一样,下面直接给出导入eclipse的步骤. 步骤: 1. 下载struts相应版本的源码 http://struts.apache.org/downlo ...

  3. 分享到QQ空间、新浪微博、腾讯微博的代码

    今天公司原来的分享代码,在IE下有问题.网上找了下网上的分享代码. 给网页加上分享代码,借助网友的力量推广网站,目前已经很流行了 以下是网页代码 QQ空间分享代码如下: <a href=&quo ...

  4. 在Dynamics CRM 2015中通过3CX插件(以及3CX windows phone)拨出电话

    背景 在On-premises部署的Dynamics CRM中实现通过网页拨通客户电话的功能 要点 3CX 提供了开箱即用的Dynamics CRM Solution,只需要在Microsoft Dy ...

  5. Effective Java 32 Use EnumSet instead of bit fields

    Bit fields is used for passing around sets of constants. Such as // Bit field enumeration constants ...

  6. 关于Redis的启动过程

    一.简介 Redis的启动也就是main函数的执行,程序的入口在redis.c中,启动流程: 1. 初始化默认服务器配置,如果是sentinel模式还需进行额外的配置 2. 修改配置文件或配置选项,这 ...

  7. jmeter接口测试教程

    一.Jmeter接口测试步骤: 1.添加线程组

  8. MAVEN整理(乘国庆还有时间,停下来整理一下)

    昨天写下了这篇博客(http://www.cnblogs.com/hzmark/p/131003Release.html),今天有时间,就这里一下第一篇内容. 换工作公司开发平台: WINDOWS+V ...

  9. java Timer(定时调用、实现固定时间执行)

    最近需要用到定时调用的功能.可以通过java的Timer类来进行定时调用,下面是有关Timer的一些相关知识. 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个 ...

  10. WEB安全--业务安全漏洞

    0x00 索引说明 在OWASP的分享,关于业务安全的漏洞检测模型. 0x01 身份认证安全 1 暴力破解 在没有验证码限制或者一次验证码可以多次使用的地方,使用已知用户对密码进行暴力破解或者用一个通 ...