2023年如何制作基于Python的真正可移植Linux可执行文件?
将Python工具打包为跨Linux发行版的独立可执行文件
我近期花了大量时间研究如何把Python编写的工具打包成独立、自包含的可执行文件,让它能在大多数Linux发行版上直接运行,无需依赖任何特殊环境(包括Python本身)。以下是总结的核心实现步骤:
- 使用专用打包工具:比如Nuitka、Pyoxidizer、PyInstaller、python-appimage等,这类工具可将Python代码及其依赖打包为单一可执行文件。
- 基于足够老旧的glibc版本构建:可通过旧版Linux发行版或手动配置工具链实现。这对带C扩展的项目、Nuitka/Pyoxidizer这类工具的使用场景,以及Python本身的跨发行版兼容性至关重要。
- 严格管控依赖及其传递依赖:所有Python wheel包需带有
any平台标签,或符合要求的manylinux标签。可用auditwheel工具检查并修复wheel的平台标签,目前主流包大多已支持manylinux标准。
另外需要注意,大型项目使用PyOxidizer/Nuitka/PyInstaller这类工具时,可能会遇到兼容性问题,务必在目标Linux发行版中完成端到端测试。
为方便演示,我搭建了示例仓库overpackaged,包含以下内容:
- 带有问题依赖和C扩展的示例应用
- 生成兼容wheel仓库的脚本
- 多种打包工具的构建脚本
- 可移植性测试与性能基准测试代码
- 一键运行的Readme文档和Makefile
欢迎大家提供反馈与见解!
内容的提问来源于stack exchange,提问作者Arseniy
相关产品推荐
相关产品推荐

