python之pyinstaller库将python脚本编译成可执⾏程序
(windows系统)
前⾔
Python是⼀个脚本语⾔,被解释器解释执⾏。它的发布⽅式:
.py⽂件:对于开源项⽬或者源码没那么重要的,直接提供源码,需要使⽤者⾃⾏安装Python并且安装依赖的各种库。(Python官⽅的各种安装包就是这样做的)
.pyc⽂件:有些公司或个⼈因为机密或者各种原因,不愿意源码被运⾏者看到,可以使⽤pyc⽂件发布,pyc⽂件是Python解释器可以识别的⼆进制码,故发布后也是跨平台的,需要使⽤者安装相应版本的Python和依赖库。
可执⾏⽂件:对于⾮码农⽤户或者⼀些⼩⽩⽤户,你让他装个Python同时还要折腾⼀堆依赖库,那简直是个灾难。对于此类⽤户,最简单的⽅式就是提供⼀个可执⾏⽂件,只需要把⽤法告诉Ta即可。⽐较⿇烦的是需要针对不同平台需要打包不同的可执⾏⽂件(Windows,Linux,Mac,...)。
安装PyInstaller
对于那些⽹络⽐较稳定,能够流畅使⽤pip源地址的⽤户,直接下⾯的命令就可以搞定:
pip install pyinstaller
通常我们会下载源码包,然后进⼊包⽬录,执⾏下⾯的命令(需要安装setuptools):
python setup.py install
安装完后,检查安装成功与否:
pyinstaller --version
安装成功后,就可以使⽤下⾯的命令了:
pyinstaller : 打包可执⾏⽂件的主要命令,详细⽤法下⾯会介绍。
pyi-archive_viewer : 查看可执⾏包⾥⾯的⽂件列表。
pyi-bindepend : 查看可执⾏⽂件依赖的动态库(.so或.dll⽂件)
< : 等等。
Pyinstaller的使⽤
需要明确的⼏点:
① Pyinstaller是命令⾏⼯具,不需要进⼊python内部去输⼊执⾏代码
② Pyinstaller可以使程序脱离解析器运⾏,还能防⽌源代码泄漏(打包的时候已经把解析器给封装进去了)
③ Pyinstaller打包简单、粗暴、⽆脑
pyinstaller的语法:
pyinstaller [options] script [script ...] | specfile
最简单的⽤法,在和myscript.py同⽬录下执⾏命令:python怎么读取桌面上的文件
pyinstaller mycript.py
然后会看到新增加了两个⽬录build和dist,dist下⾯的⽂件就是可以发布的可执⾏⽂件,对于上⾯的命令你会发现dist⽬录下⾯有⼀堆⽂件,各种都动态库⽂件和myscrip可执⾏⽂件。有时这样感觉⽐较⿇
烦,需要打包dist下⾯的所有东西才能发布,万⼀丢掉⼀个动态库就⽆法运⾏了,好在pyInstaller⽀持单⽂件模式,只需要执⾏:
pyinstaller -F mycript.py
你会发现dist下⾯只有⼀个可执⾏⽂件,这个单⽂件就可以发布了,可以运⾏在你正在使⽤的操作系统类似的系统的下⾯。pyinstaller的各主要参数说明
-F 表⽰⽣成单个可执⾏⽂件;
-D –onedir 创建⼀个⽬录,包含exe⽂件,但会依赖很多⽂件(默认选项)。
-w 表⽰去掉控制台窗⼝,这在GUI界⾯时⾮常有⽤。不过如果是命令⾏程序的话那就把这个选项删除吧!;
-c –console, –nowindowed 使⽤控制台,⽆界⾯(默认);
-p 表⽰你⾃⼰⾃定义需要加载的类路径,⼀般情况下⽤不到;
-i 表⽰可执⾏⽂件的图标。
.
spec⽂件
在执⾏pyInstaller命令的时候,会在和脚本相同⽬录下,⽣成⼀个.spec⽂件,该⽂件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项。⼀般我们不⽤去理会这个⽂件,若需要打包数据⽂件,或者给打包的⼆进制增加⼀些Python的运⾏时选项时...⼀些⾼级打包选项时,需要⼿动编辑.spec⽂件。可以使⽤:
pyi-makespec options script [script ...]
创建⼀个.spec⽂件,对于⼿动编辑的.spec⽂件,我们可以使⽤下⾯任意⼀条命令:
pyinstaller specfile
pyi-build specfile
常⽤指令
注意:指定路径⽣成可执⾏⽂件的命令参数distpath前⾯是两个 -
pyInstaller的原理简介
PyInstaller其实就是把python解析器和你⾃⼰的脚本打包成⼀个可执⾏的⽂件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成⼀个可执⾏⽂件会提⾼运⾏效率,相反可能会降低运⾏效率;好处就是在运⾏者的机器上不⽤安装python和你的脚本依赖的库。在Linux操作系统下,它主要⽤的binutil⼯具包⾥⾯的ldd和objdump命令。
PyInstaller输⼊你指定的的脚本,⾸先分析脚本所依赖的其他脚本,然后去查,复制,把所有相关的脚本收集起来,包括Python解析器,然后把这些⽂件放在⼀个⽬录下,或者打包进⼀个可执⾏⽂件⾥⾯。
可以直接发布输出的整个⽂件夹⾥⾯的⽂件,或者⽣成的可执⾏⽂件。你只需要告诉⽤户,你的应⽤App是⾃我包含的,不需要安装其他包,或某个版本的Python,就可以直接运⾏了。
需要注意的是,PyInstaller打包的执⾏⽂件,只能在和打包机器系统同样的环境下。也就是说,不具备可移植性,若需要在不同系统上运⾏,就必须针对该平台进⾏打包。
实例
1、直接⽣成可执⾏⽂件
进⼊桌⾯,打开命令⾏,指引⽂件路径
pyinstaller -F 游戏.py
命令⾏的输⼊及输出结果如下:
⽣成的桌⾯⽂件有:(共四个⽂件,其中可执⾏⽂件就是在dist(distribute发布的缩写)⽂件夹下⾯)进⼊dist⽂件夹后,双击这个可执⾏⽂件,程序就会⾃动运⾏
2、修改图标
操作如下:(还是以桌⾯游戏.py为例,注意尽量使⽤英⽂命名,不然会修改不了图标),这⾥⾸先介绍⼀下查ico⽂件的⽹站,注意:图标和py⽂件放置在⼀起,尽量都使⽤英⽂进⾏⽂件命名,代码如下
pyinstaller -i youxi.ico -F youxi.py
输出的结果为:
dist⽂件夹下的可执⾏程序如下(图标修改完成)
3、修改名称
还是同⼀个⽂件,在修改图标的同时修改⽂件名称,输⼊指令如下:
pyinstaller -i youxi.ico -F youxi.py -n demo
输出的结果为:
修改路径
还是相同的⽂件,在修改图标的同时修改⽂件名称再修改输出的⽂件路径,输⼊指令如下: pyinstaller -i youxi.ico -F youxi.py  -n name --distpath C:\Users\86177\Desktop
输出的结果为:(输出的没有dist⽂件夹了,直接⽣成可执⾏.exe⽂件在桌⾯)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。