python 转 exe -- py2exe库实录
本文基于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库实录的更多相关文章
- py2exe把python程序转换exe
1.首先下载py2exe:https://sourceforge.net/projects/py2exe/ 2.假设要打包的python 文件放在C:\packet路径下 如 果你有一个名为myscr ...
- python打包成exe(py2exe)
对比了几个打包工具,发现py2exe更好用一点,一个命令就可以. 1.获取 http://prdownloads.sourceforge.net/py2exe 下载python版本对应的.直接下载然后 ...
- 打包python到exe
#!/usr/bin/python # -*- coding:utf-8 -*- import distutils import py2exe from distutils.core import s ...
- Python打包EXE神器 pyinstaller
最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...
- [python学习笔记] py2exe 打包
遇坑 之前经过折腾,pyinstaller打包文件可以在别的windows7上运行.但是,mfk, 客户说是xp系统.崩溃 使用pyinstaller各种折腾,打包出来的依然是不是有效的win32程序 ...
- Python测试 ——开发工具库
Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...
- Python编译exe
有几种办法,选择py2exe,从pip安装,还不行,下载看起来都比较老,还是在csdn上下载了一个64位版本for2.7的 http://download.csdn.net/download/henu ...
- python制作exe可执行文件的方法---使用pyinstaller
python制作exe可执行文件的方法---使用pyinstaller python生成windows下exe格式的可执行程序有三种可选方案: py2exe是大家所熟知的,今天要介绍pyinsta ...
- python调用.net动态库
# python调用.net动态库 ### pythonnet简介------------------------------ pythonnet是cpython的扩展- pythonnet提供了cp ...
随机推荐
- IOS 自定义按钮(代码实现)+九宫格
在一些下载应用里整个页面都是按钮,有好多好多,但是仔细观察不难发现他们很有规律.就像下面一样
- 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(二)ActionSheet视图 学习笔记
action动作 sheet表 其实就是一种菜单 参数:1代理:谁去代理它2取消按钮标题3这个按钮标题会自动变成红色4添加设置其他按钮(不想加,设置为nil) 然后我们为这些按钮添加点击事件: ...
- 深入理解java虚拟机(7)---线程安全 & 锁优化
关于线程安全的话题,足可以使用一本书来讲解这些东西.<Java Concurrency in Practice> 就是讲解这些的,在这里 主要还是分析JVM中关于线程安全这块的内容. 1. ...
- 最新Burpsuite Pro v1.7.03 介绍和破解版下载
0x00 介绍 Burp Suite 是用于攻击web 应用程序的集成平台.它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程.所有的工具都共享一个能处理并显示HTTP 消息, ...
- leangoo更换背景、设置颜色标签功能上线啦!
leangoo看板背景太单调?卡片标签想要添加多个?没有问题,Leangoo的本次更新就给大家带来了漂亮背景和实用的颜色标签设置,接下来就让我们一起来看看吧! 设置背景: 点击看板右上角个人头像图标按 ...
- 字符设备驱动——memory编译问题及解决办法
1.fatal error:asm/system.h:No such file or directory #include <linux/version.h> #if LINUX_VERS ...
- Sample: Write And Read data from HDFS with java API
HDFS: hadoop distributed file system 它抽象了整个集群的存储资源,可以存放大文件. 文件采用分块存储复制的设计.块的默认大小是64M. 流式数据访问,一次写入(现支 ...
- SQL TUNNING
In a Nested Loops Join, for example, the first accessed table is called the outer table and the seco ...
- SQL-一道特殊的字符串分解题目
本题不是一道直接的字符串拆解, 应用场景如下,表中有一个字段,是表示事件受影响的国家集合,使用逗号进行分隔,不幸的是,居然发现有些国家本身就带有逗号,这样在规范化的时候,如何准确地找到这些国家呢? 以 ...
- JVM的内存区域划分
JVM的内存区域划分 学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆.栈以及静态数据区.那么在Java语言当中,内存又是如何划分的 ...