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

posted @ 2018-07-21 14:32  m*x*h  阅读(2977)  评论(0编辑  收藏  举报