Python 打包工具 zipapp

Python 标准库里提供了一个项目打包压缩的工具 zipapp,可以把项目打包到一个可执行文件里,从而方便地发布或者分享出去;收到文件后,也不需要解包等操作,直接运行即可。

打包:

比如项目结构是这样的:

myapp/
├── client.py
├── config.py
├── myapp.py
└── server.py

可以这样配置 Makefile:

.PHONY: myapp
myapp: client.py config.py myapp.py server.py
    python3 -m zipapp $@ -o $@.pyz -p "/usr/bin/env python3" -m "$@:main"

这会生成 myapp.pyz。按 zipapp 的惯例,生成的文件以 .pyz 作为扩展名。

并且,因为通过 -p 选项指定了解释器,所以这个文件可以直接运行。

具体 zipapp 的文档,可以看这里 。比如,打包时还可以设置 --compress 参数,这样可以通过压缩从而控制生成文件的尺寸。

解包:

如果察看这个文件的内容,可以发现几乎都是文本,以及一些二进制的数据。

如果需要解包,可以用以下方法:

import zipfile

a = zipfile.ZipFile('myapp.pyz', 'r')
>>> a.extractall('.')

操作完成后,所以文件都解包在当前目录下,跟打包前的结构一样。

Read More: