python 转 exe -- py2exe库实录

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

本文基于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文件

 

双击运行,出现窗口

 

目录
相关文章
|
3月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
456 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
3月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
218 0
|
8月前
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
1409 103
|
5月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
2月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
229 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
2月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
306 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
4月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
239 18
|
5月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
495 51
|
4月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
382 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
4月前
|
数据采集 存储 Web App开发
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
368 0

推荐镜像

更多