博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 转 exe -- py2exe库实录
阅读量:6717 次
发布时间:2019-06-25

本文共 3122 字,大约阅读时间需要 10 分钟。

本文基于windows 7 + python 3.4

 

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

其操作步骤是:

--> 编写python程序

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

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

 

三个例子:

1.命令行

2.GUI (tkinter)

3.GUI (pyqt5)

 

1. 命令行

# hello.pyprint('你好,世界!')

 

# setup.pyfrom distutils.core import setupimport py2exeimport 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.pyimport tkinter as tkroot = tk.Tk()tk.Label(root, text="你好,世界!").pack(ipadx=100, ipady=50)root.mainloop()

 

# setup.pyfrom distutils.core import setupimport py2exeimport 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 sysapp = 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 setupimport py2exeimport 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文件

 

双击运行,出现窗口

 

本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/5388204.html
,如需转载请自行联系原作者
你可能感兴趣的文章
库蒂尼奥梅西破门 国王杯巴萨6:1塞维利亚晋级
查看>>
李清照曹雪芹“躺枪”,古风歌真的都是词藻堆砌吗?
查看>>
BAT互联网公司的程序员,应用程序架构思路,这些都懂?
查看>>
台湾知名炸鸡连锁店疑供应逾期肉品 遭封存追查
查看>>
澳门2018年入境旅客3580万人次 创记录新高
查看>>
甘肃祁连山加大生态保护 北麓草原冬日现绿头鸭
查看>>
公务员周末送外卖是否违纪?官方暖心回复获网友点赞
查看>>
双星闪耀 上汽大众途岳、全新一代帕萨特联袂亮相
查看>>
监控系统云计算核心技术,主要包括十项技术
查看>>
下半年最值得关注的10个技术公众号
查看>>
MySQL 异步驱动浅析 (一):性能分析
查看>>
理解高性能网络模型
查看>>
提高 JavaScript 开发效率的高级 VSCode 扩展!
查看>>
30岁的你,还在写代码吗?
查看>>
阿里提出联合预估算法JUMP:点击率和停留时长预测效果最优
查看>>
世界杯要来了,AI预测冠军哪家强?
查看>>
代码这样写更优雅 (Python 版)
查看>>
SVG入门—如何手写SVG
查看>>
【面试必备】透过源码角度一步一步带你分析 ArrayList 扩容机制
查看>>
深入理解虚拟机之虚拟机性能监控和故障处理工具
查看>>