python脚本在没有安装python的机器上是不能直接运行,需要借助第三方库将脚本打包成exe文件,进而运行python程序。

本文记录一下Pyinstaller库打包py文件为exe的使用方法。

一、安装Pyinstaller库,pip install pyinstaller 这个不废话了。

二、简单的py程序,可以命令行进入pyinstaller所在的文件夹(如果没有配置环境变量的话,),直接执行(但是不推荐)。

pyinstaller打包python pyinstaller打包Python脚本_Windows

pyinstaller打包python pyinstaller打包Python脚本_Windows_02

pyinstaller -F main.py或者pyinstaller -D main.py就可以

-F 表示打包为单个exe文件
-D 表示打包为一个文件夹,里面有很多文件

三、推荐这样来做

1、考虑到项目复杂要做很多配置, 我们先来生成一个打包配置文件

执行命令pyi-makespec -F main.py(也可以pyi-makespec -D main.py等等), 然后你就会在main.py的同级目录下看到main.spec文件. 这个文件的主要作用就是指定打包的各种配置。

pyinstaller打包python pyinstaller打包Python脚本_Windows_03

2、查看.spec配置文件。例如,如果在打包过程中提示Matplotlib出错,而在程序中,未包括使用Matplotlib库,可以在封装的时候不导入这个库,方法是在spec文件中的excludes行加上excludes=['matplotlib']

pyinstaller打包python pyinstaller打包Python脚本_python_04

3、执行pyinstaller xx.spec命令重新封装一遍。

pyinstaller打包python pyinstaller打包Python脚本_python_05


打包好的程序会放在当前文件夹下一个叫dist的文件夹里面。

四、其他打包的命令(前提是如果没有配置环境变量的话,要先进入pyinstaller所在的文件夹)

pyinstaller -F main.py 打包成单个文件
pyinstaller -D main.py 打包为文件夹
pyinstaller -D -i xxx.ico main.py 定制图标

-i xxx.ico 表示自定义exe图标的样式

附件:pyinstaller相关参数

常用的就是-F -D

-F, –onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
-D, –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
-K, –tk 在部署时包含 TCL/TK
-a, –ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.
-d, –debug 产生debug版本的可执行文件
-w,–windowed,–noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
-c,–nowindowed,–console
使用控制台子系统执行(默认)(只对Windows有效)