pyinstaller打包Python项目总结

一、单个文件打包

简单打包

例如现在有一个main.py文件内容如下

import os
print("hello world")
os.system("pause")

运行结果如图

pyinstaller打包python文件兼容32位 pyinstaller打包项目_python

现在用一下命令打包成一个可执行文件pyinstaller -F main.py

再同级目录下生成一个dist文件夹里面就会生成一个可执行文件,双击就可以执行

pyinstaller打包python文件兼容32位 pyinstaller打包项目_ico_02

带图标打包

有的时候为了美观,可以给可执行文件加一个图标,这时用这个命令pyinstaller -F main.py-i filename.ico

打包完成后把这个ico文件复制到dst和可执行文件一起就可以了

pyinstaller打包python文件兼容32位 pyinstaller打包项目_python_03

二、项目多文件打包

上面只是一些简单的demo打包成可执行文件的简单方式,大多数时候需要打包的都是多个文件的项目,这个时候就会复杂一些,主要使用一下命令进行pyinstaller -D main.py -p other1.py -p other2.py [-w] -i flie.icon [--distpath]

对部分命令解释:

命令

作用

-F

打包成一个exe文件,就是不管原文件时多少个最终生成只是一个exe可执行文件,这种方式再大型项目中不适用,打开程序太慢

-D

以依赖的方式打包,类似于平时安装工具的方式,会有一对的库文件,一般项目建议这种方式

-p

主文件以外其他用到的python文件

-w

运行程序的时候不显示终端。如果不加的话就是做了UI界面,运行的时候也会跳出终端,这个视情况决定

-i

加载图标文件

–distpath

指定打包的目录,后面接一个目录

这是部分用到的命令的解释,还有其他命令可以上官网查看文档查询。

例程如下:

有个项目有4个Python文件运行主程序效果如图

pyinstaller打包python文件兼容32位 pyinstaller打包项目_可执行文件_04

用此命令打包pyinstaller -D MysherTools.py -p BLC.py -p consistencyCheck.py -p ui.py -w -i .\inco\tool.ico

生成如图所示的文件

pyinstaller打包python文件兼容32位 pyinstaller打包项目_ico_05

双击运行exe可执行文件效果如图

pyinstaller打包python文件兼容32位 pyinstaller打包项目_python_06

一般出现如上的提示,都是用到的静态文件没有放在指定路径下,因为打包的时候ico文件是放在icon目录下,所以需要将这个目录拷贝到可执行文件的路径下。放到指定位置后运行正常如图

pyinstaller打包python文件兼容32位 pyinstaller打包项目_可执行文件_07

注意:文件用到的静态文件一定要保证路径正常,不然运行会出错。

三、打包后文件太大

一般如果直接这么打包会导致打包后的文件特别大,这时候就需要创建一个虚拟环境,只安装项目需要的库文件,然后再打包,这样就会小很多,因为python环境下没用到的库也被打包进去导致体积太大。