python2.7打包exe文件

image.png

一、安装pyinstaller

由于python2.7停止服务,我在使用离线包安装没有成功,于是连上网使用pip 在线安装

也可以在线安装,找一个国内的源

pip install pyinstaller==3.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

二、使用pyinstaller将程序打包成exe可执行文件

1.准备 FileExport.py 要打包得python文件

2.准备 favicon.io 图标文件 

pyinstaller-singlefile.py 编写以下内容

from PyInstaller.__main__ import run
opts=['FileExport.py','-w','-F','--icon=favicon.ico']

run(opts)

image.png

执行成功后会在当前目录下生成disk文件夹,文件夹下的exe文件即为打包好的文件

image.png

主要选项包括:

-F, –onefile 打包成一个exe文件。
-D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。
-c, –console, –nowindowed 使用控制台,无界面(默认)
-w, –windowed, –noconsole 使用窗口,无控制台

-h, --help显示此帮助消息并退出
-v, --version显示程序版本信息并退出。
--distpathDIR放置捆绑应用的位置(默认值:./ did)
--workpath WORKPATH

在哪里放置所有临时工作文件,。log,.pyz等(默认值:./ build)
-y, --noconfirm

替换输出目录(默认值:SPECPATH / dist / SPECNAME)而不要求确认
--upx-dir UPX_DIR

UPX实用程序的路径(默认:搜索执行路径)
-a, --ascii不包括unicode编码支持(默认值:如果可用,则包含)
--clean在构建之前清理PyInstaller缓存并删除临时文件。
--log-level LEVEL

构建时控制台消息中的详细信息量。LEVEL可能是TRACE,DEBUG,INFO,WARN,ERROR,CRITICAL之一(默认值:INFO)。

另外说几个非常重要的问题

1.命令使用pyinstaller和pyinstaller.exe结果都是一样的

2.-w是不显示命令窗口,  -i 图标文件的路径  这是改变图标的,但是我发现只能改变任务栏里的和命令窗口的图标,并不能改变exe文件的图标。另外这些参数要加载pyinstaller和路径中间。

3.有一些代码需要调用一些图片和资源文件的,这是不会自动导入的,需要你自己手动复制进去才行。不然exe文件运行时命令窗口会报错找不到这个文件。

4.也是最坑的一点。就是当你使用错误的参数去打包或者打包到一半中断,等等此类运行到一半没了的情况。会导致你原来的py文件变成一个0KB的空文件。里面的代码会全部消失!!!所以以后需要有个良好的习惯,就是复制一份代码出来,用这个副本进行打包。并且参数出错,或者打错了导致失败时,检查下副本文件的py文件是否还存在再继续重新打包,不然打出来的就是空的文件,自然一直闪退,因为压根没内容。

5.写代码的时候应当有个良好的习惯,用什么函数导什么函数,不要上来import整个库,最后你会发现你一个100KB的代码打包出来有500MB,全是库,简直无语

6.pygame代码调试的时候要用quit()不然程序结束时会崩溃。但是直接运行py文件就不需要这个函数。这个我们之前的文章也提到过了。但是这里当我使用-w做成无窗口的程序后,一结束发现报错,暂停后发现报的是找不到quit()函数。可见这个函数其实是一个很让人无语的函数。一方面pygame官方网上说结束程序的时候需要加入这个函数。另一方面其实在正在运行时都不需要甚至会报错。虽然也不影响运行,但是弹个窗口出来说 什么不fail to execute总是让别人觉得你是个lowb。所以,调试的时候加一下,到时候execute的时候去掉。

查看详细使用情况,请查看:Python-django-pyinstaller

评论回复