pyinstaller
pyinstaller是一个非常简单的打包python的py文件的库。用起来就几条命令就够了,
官方文档:pyinstaller
直接pip install pyinstaller 会下载到最新版的 3.3的pyinstaller,和之前版本的语法是不同的,这个版本直接cmd里输入
pyinstaller X:\XXX\XXX.py 就可以了 生成的文件就在c盘user\用户名\dist 下,而用户名文件下还有个build里面存放了她运行的中间文件,里面有个warn文件详细记录了打包的错误,虽然没什么卵用,但至少可以拿来百度下骗骗自己。。。哈哈
有些生成的文件直接在当前.py目录下,如图,demo01在work_st文件夹下,执行pyinstaller –F G:\work_st\demo01.py
主要选项包括:
-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)。 |
就会在work_st下生成两个文件夹。
在dist文件夹下就有demo01.exe可执行文件
另外说几个非常重要的问题
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