Python 代码打包 Overview

查看原文

本文是 PyPA 打包系列的 Overview 文章,讲述了打包代码的很多知识。

  • 打包是给部署用的,所以其实要先搞懂你打算如何部署。
  • 打包单个 module 比较少见,但也有这样的需求, 参考 bottle.py 这类库。
  • 更多见的需求可能会是 把 module 装进 package, 然后使用 sdist 分发(其实就是 .tar.gz)。后者比较适合纯 Python 代码的发布。
  • 也有一些库有 C 的以来,那就要推荐发二进制包, 发布的时候给出 wheel 包给预编译好的平台,sdist 包给那些没预编译的平台。
  • 有些平台例如 Heroku,GAE 等等有自己的打包流程。
  • 桌面端或者手机端发布目前不是 Python 的强项,但也有 Kivy, Beeware, Brython, Flexx 这些做参考。
  • 如果目标是直接发布免安装的可运行二进制文件,可以考虑 pex, zipapp, shiv
  • 如果目标是桌面端的工具脚本,考虑用 homebrew 发版。
  • 如果目标是科学计算类的工具,考虑用 anaconda 发版。
  • 打包成 docker image 也可以考虑哦,如果发版的东西有 OS 的依赖。