我们都知道 python 是一门脚本解释性语言,不像 C 语言需要编译执行,有时候,我们需要把自己写好的脚本发给其他人使用,但是对方如果需要执行脚本则首先需要安装环境,安装对应的库,非常麻烦,那么我们能不能把脚本打包成一个二进制文件,其他人直接执行就可以呢?答案是当然可以了。使用 pyinstaller 可以非常轻松的发布你的程序。
原理
PyInstaller 其实就是把 python 解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运行者的机器上不用安装 python 和你的脚本依赖的库。在 Linux 操作系统下,它主要用的 binutil 工具包里面的 ldd 和 objdump 命令。
安装 pyinstaller
pip install pyinstaller
编译成二进制文件
pyinstaller -F mycript.py
示例:
有一个 python 脚本,内容就是输出一行hello world。
➜ testbin python hello.py
hello world
执行
pyinstaller -F hello.py
在当前目录下会有一个dist目录,里面的就是可执行文件
➜ testbin ls
build dist hello.py hello.spec
➜ testbin cd dist
➜ dist ls
hello
➜ dist ./hello
hello world
注意:只能在和打包机器系统同样的环境下,不同平台需要单独移植,也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。