美文网首页
Pyinstaller新手向导

Pyinstaller新手向导

作者: 镜月花水 | 来源:发表于2021-02-02 18:41 被阅读0次

用python写了一个小程序,考虑到给到windows用户方便使用,就想着打包成exe。于是搜索了下python打包成exe的方法,查阅了一些资料,最终觉得pyinstaller相对比较成熟,于是就先采用pyinstaller了。

因为没有找到比较全面中文新手pyinstaller向导,所以决定写一个。

虽然我写了下面的内容,单依然认为,学习使用一个工具,最好的资料是官方文档。
所以有条件的同学请阅读官方文档

1. 安装

Pyinstaller支持Windows,MacOS,Linux,以及AIX, Solaris, FreeBSD and OpenBSD但是不支持跨平台编译,所以Window运行的程序只能在Windows编译,其他平台也一样。
一般来说

pip install pyinstaller

就够了,当然还可以通过源码安装,下载安装包,或者在Mac上还可以通过其他的包管理工具MacPorts或者Homebrew安装

2. 检查安装

通过命令

pyinstaller --version

如果成功输出版本号,则安装成功了,同时你还可以查看安装路径下,安装成功的可执行文件。(具体细节可以查看官方文档)

3. 安装成功的命令

pyinstaller
pyi-makespec
pyi-archive_viewer
pyi-bindepend
pyi-grab_version

后面四个命令也不常用,安装方式的不一样,可能会导致后面几个命令没有安装上,如果需要,请阅读官方文档Installed commands这一章。

4. 工作原理

最简单的打包方式

pyinstaller hello.py

这行命令后面的做的事情时,Pyintaller先分析hello.py依赖的其他模块和库。然后把所有这些依赖的文件(包括当前的python的解释器)copy到指定的文件夹(如果你制定打包成一个文件的话,最终会打包成一个文件)

最终打包成功的文件,不需要用户安装任何库和依赖,Python也不用装,就可以运行。因为如上面所述,打包的文件中已经包含了所有。

4.1 寻找依赖

Pyinstaller寻找脚本中所有import语句,然后找到这些语句指向的文件中的import,然后再递归。最终找到所有的依赖。

需要注意的是,Pyinstaller只支持通过常规imports引入的依赖,一些其他的方式,pyinstaller是找不到的,例如import(), imp.find_module(), sys.path等。这个时候需要给pyinstaller其他的信息才可以完整依赖分析

  • 通过pyinstaller 命令 传入其他文件
  • 也可以通过命令传入额外的import 路径
  • 也可以修改pyintaller 生成的 hello.spec文件
  • 也可以自己写一个hook文件

依赖出错怎么办,如果

4.2 隐藏源码

Python编译后的字节码可以用AES256加密,通过传参

pyinstaller --key '12345678' hello.py

但是AES是对称加密,秘钥就藏在包里,而且按照官方文档的说话,是比较容易找到秘钥的。但是可以一定层面防住小白。

5. 打包

5.1 命令行

命令行输入

pyinstaller hello.py

会在当前目录下生成build和dist文件,dist文件夹下面会有hello文件夹,里面里面包括hello可执行文件以及所有的依赖


1.png

当然如果输入

python --onefile hello.py

得到的就是一个可执行文件,在window上就是exe文件。
[图片上传失败...(image-c5e3df-1612262477240)]

我们还可以传参指定icon,那么打包出来就是一个有icon的应用程序。
还有其他的很多参数,比方说修改打包目标文件夹,运行时是否有命令行,具体请查看官方文档。

5.2 打包脚本

也可以在py脚本中调用PyInstaller.main.run()来执行打包
例如

PyInstaller.__main__.run([
'hello.py'
'--key',
'12345678',
'--onefile',
'--distpath',
'dist/tmp'
])

6. 查看打包

使用上文中提到的命令pyi-archive_viewer 查看打包出来的包,如下:


2.png

7. 跑一个玩玩

了解一个工具最好的方式就是跑起来玩一玩,写一个hello world程序,用pyinstaller打包试试,加上各种参数看看效果,基本用法就掌握了。

相关文章

网友评论

      本文标题:Pyinstaller新手向导

      本文链接:https://www.haomeiwen.com/subject/qwoytltx.html