用Pyinstaller打包Python脚本
用Pyinstaller打包Python脚本
我们开发的脚本一般都会用到一些第三方包,可能别人也需要用到我们的脚本,如果我 们将我们的xx.py文件发给他,他是不能直接用的,他还需要安装python解释器,甚至还要安装我们用的那些第三方包,是不是有点小麻烦?
但是我们都知道,PC是可以直接运行exe文件的,这就为我们提供了一个便捷的方式。所以,从看了这个教程以后,这都将成为过去式,打成exe之后,分享即可用。
一、准备工作
1、安装Pyinstaller
- 首先打开命令行窗口
- 输入
pip install pyinstaller
,回车 - 如下图所示:
- 由于我已经事先安装好了,所以下面显示
already
等字样,第一次安装的话可能要等一会 - 下载的默认源是在国外,觉得速度慢的话可以使用清华镜像源,输入 :
-
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
即可 - 等到出现
successful
等字样就已经安装好啦
2、准备图标
- 众所周知,每个应用程序都有自己的图标,使用
pyinstaller
打包的exe也是有图标的,不过它的默认图标比较大众,为了使我们的exe更加美观,我们可以自己准备一个图标 - 这里推荐两个网址,我们可以选择合适的图片:
- 阿里矢量图标库
- 图标下载
- 有了图片还不够,用作图标的图片格式必须是
.ico
格式 - 这里再推荐一个图片转换器:
- 注意根据不同系统选择相应的格式
- 这样我们的图标就制作完成啦
二、打包
1、打包机制
- python脚本是不能脱离python解释器单独运行的,所以在打包的时候,至少会将python解释器和脚本一起打包,同样,为了打包的exe能正常运行,会把我们所有安装的第三方包一并打包到exe。
2、开始打包
1.pyinstaller + 脚本名.py
- 这里呢,我拿刚写的一个自动化脚本
autologin.py
举个栗子 - 我这里直接在
Pycharm
的Terminal
里头操作,不用pycharm的可以直接用命令行窗口 - 首先,
cd
到需要打包的脚本目录下(这个很关键,或者直接在目录下打开cmd,方法很多) - 切换到脚本目录下后,再敲入
pyinstaller autologin.py
,下面就开始自动分析,在该目录下产生一系列exe运行所依赖的文件:
箭头指向的便是我们的exe,最好在dist目录下面找,有些脚本分析时,在build目录下面没有exe文件
- 这种方法打包后携带了大量的库文件,一个单独的exe文件依然无法使用,所以这种方法我们不建议使用
2.pyinstaller -F + 脚本名.py
- 在命令行窗口敲入
pyinstaller -F autologin.py
- 待分析完成,我们可以在dist目录下看到一个单独的exe文件
- 默认的图标
- 这样,我们就完成了一个打包工作,如果别人需要,即使没有python环境,他依然可以运行。
3.pyinstaller -F -i 图标名.ico + 脚本名.py
-
这里我们用上之前准备好的图标,将.ico格式的图片放到该脚本目录下
-
同样,我在命令行敲入
pyinstaller -F -i icon.ico autologin.py
-
打包过程中我发现一个奇怪的现象,原本英文名
autologin
无法显示我自定义的图标,可是拖到桌面上就可以显示出来,在原目录下改成中文名也能显示出来 -
不过要注意的事,打包时所用到的路径千万不能有中文名,不然可能会出现意想不到的
bug
-
效果:
三、总结
-
pyinstaller xx.py
:会产生大量脚本依赖的库文件,了解,不建议使用 -
pyinstaller -F setup.py
打包出独立的exe -
pyinstaller -F -i xx.ico xx.py
打包出独立exe且自定义图标 -
pyinstaller -F -w xx.py
不带控制台的打包,即运行exe后不显示cmd那样的黑窗口,了解即可
很早就想通过写博客的方式来记录一段时间的收获,却迟迟没有动手,这次算是一个简单的尝试。~~
有些事,你不去做,永远不知道会发生什么,万一。。。
扇脸