当前位置:   article > 正文

Python 进阶必学库:Pyinstaller 使用详解 !_pyinstaller -d

pyinstaller -d
HackPython 致力于有趣有价值的编程教学

 

 

 

 

 

简介

当我们希望将自己编写好的程序传送给他人使用时,如果对方没有安装 Python 环境就无法使用程序了,我们难以让每个使用者都安装 Python 环境,是否可以在不必安装 Python 环境的前提下使用 Python 程序呢??

可以使用 Pyinstaller 将程序打包,然后再分享给其他人使用,他人使用只需双击运行打包好的程序。

可以通过 pip 来安装,命令如下:

pip install pyinstaller

 

使用

pyinstaller 最重要的两个参数就是 -F 与 -D 参数。

使用 - F 参数, pyinstaller 会将 python 程序打包成单个可执行文件。

使用 - D 参数, pyinstaller 会将 python 程序打包成一个文件夹,运行程序时,需要进入该文件夹,点击运行相应的可执行程序。

为了美观,还可以通过 - i 参数指定打包程序的图标 (icon),但这个命令只能在 Windows 平台下生效,此外还可以使用 - n 参数指定生成打包文件的名称。

如果你使用了 PyQt5 或 tkinter 开发了界面,通常不会希望程序运行时弹出 cmd 命令行,此时就可以使用 - w 参数。

?简单总结一下:

-F:打包 Python 程序为单个可执行文件

-D:打包 Python 程序为一个文件夹

-i:生成图标,只适用于 Windows 平台

-n:指定打包后生成文件的名称

-w:禁止命令行弹出

综上所述,最常见的命令为:

pyinstaller 
-
i xxx
.
ico 
-
n xxx 
-
w 
-
D xxx
.
py

-i 参数后必须接 .ico 结尾的图标文件

-D 或 -F 后必须接 python 程序的入库程序,常见情况为 main.py

对应依赖比较多的程序,建议使用 -D, -F 更适合单文件的 py 脚本。

简单原理

打包时,pyinstaller 此时会生成相应的 spec 文件,大体流程如下:

?1、在脚本目录生成 xxx.spec 文件 (取决于 -n 参数,没传,则与 xxx.py 同名为 xxx);

?2、创建一个 build 目录;

?3、写入一些日志文件和中间流程文件到 build 目录;

?4、创建 dist 目录;

?5、生成可执行文件或文件夹到 dist 目录;

 

 

 

 

此时,进入 dist 目录就可以看见自己的打包文件了。

 

 

 

 

 

击 nameauto.exe 文件,效果如下:

效果如下:

 

 

 

 

 

这是一个利用 tkinter 构建的程序。

注意事项

Pyinstaller 是跨平台的,但并不是指其生成应用是跨平台的,而是 Pyinstaller 本身是跨平台的,在 Windows 平台下,可以打包出 exe 文件。

?避免打包后,包文件过大

为了避免 Pyinstaller 打包后程序或文件夹过大,如:几百 KB 的程序打包后编程 500M 左右的程序,在引用包时,尽量使用 from ... import ... 语句,这是因为 Pyinstaller 打包的路径其实是将 python 解释器以及项目中使用的库直接复制过来,所以如果你没事就别 import... ,那么 Pyinstaller 会将整个模块复制过去,此时打出来的包就会很大。

?考虑路径问题

使用 python 时,要养成使用 os.path.join 的习惯,这不仅可以避免跨平台的路径坑 (windows 路径表达与类 Unix 是不同),又可以在打包时不会出现相对路径的问题,很多 python 程序员编写路径喜欢使用 + 号来链接路径,这会增加项目的维护成本

pyinstaller 打包的项目遇到路径都使用 os.path.join 则可

?外部数据问题

虽然在上节中,提及了使用外部数据时,可以自定义 spec 文件中的 datas 字段,但我更常用的做法是直接将数据复制过去,不去修改 datas。

比如我的项目中依赖 config 文件夹下的配置文件,执行将 config 文件夹整体直接复制到打包好的文件夹中则可

?闪屏结束

如果是简单的程序,可能会出现运行可执行程序后出现一闪而过的情况,这种情况下要么是程序运行结束(比如直接打印的 helloWorld),要么程序出现错误退出了。

这种情况要么通过 input () 函数捕捉输入自己主动结束程序,要么就在 cmd 下运行 exe 文件,从而通过 cmd 看到效果

结尾

掌握了 Pyinstaller 后,你就可以将任意程序打包发送给他人了,最后欢迎学习 HackPython 的教学课程并感觉您的阅读与支持。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/630665
推荐阅读
相关标签
  

闽ICP备14008679号