Python-Guide-CN 项目:Python 代码冻结技术详解

Python-Guide-CN 项目:Python 代码冻结技术详解

Python-Guide-CN Python最佳实践指南。 The chinese translation of "Hitchhiker's Guide to Python". Python-Guide-CN 项目地址: https://gitcode.com/gh_mirrors/py/Python-Guide-CN

什么是代码冻结?

代码冻结(Freezing)是指将Python程序及其依赖项打包成单个可执行文件的过程。这种技术使得终端用户无需安装Python环境就能直接运行程序,极大简化了软件分发流程。

知名软件如Dropbox、星战前夜(EVE Online)、文明4等都采用了这种技术进行分发。代码冻结的主要优势包括:

  1. 用户无需预先安装特定版本的Python
  2. 在Windows等系统上,可直接提供.exe等可执行文件
  3. 简化了依赖管理,所有依赖项都打包在一个文件中

但代码冻结也有其局限性:

  • 会增加2-12MB的发行包大小
  • 安全更新需要开发者重新打包分发
  • 某些特定功能可能受限

主流代码冻结工具对比

下表是2019年10月各主流冻结工具的功能对比:

| 工具名称 | Windows | Linux | macOS | Python 3 | 单文件模式 | 最新更新日期 | |--------------|---------|-------|-------|----------|------------|--------------| | bbFreeze | 支持 | 支持 | 支持 | 不支持 | 不支持 | 2014-01-20 | | py2exe | 支持 | 不支持| 不支持| 支持 | 支持 | 2014-10-21 | | PyInstaller | 支持 | 支持 | 支持 | 支持 | 支持 | 2019-07-09 | | cx_Freeze | 支持 | 支持 | 支持 | 支持 | 不支持 | 2019-08-29 | | py2app | 不支持 | 不支持| 支持 | 支持 | 不支持 | 2019-03-25 |

重要说明:

  1. 只有PyInstaller支持从Linux交叉编译Windows可执行文件
  2. 除py2app外,其他工具在Windows上需要Microsoft Visual C++运行时库
  3. PyInstaller是唯一能创建完全自包含单文件exe的工具

Windows平台冻结方案

1. bbFreeze方案

bbFreeze是一个老牌冻结工具,但已停止维护,仅支持Python 2.x。

安装步骤:

pip install bbfreeze

基本使用: 创建bb_setup.py文件:

from bbfreeze import Freezer

freezer = Freezer(distdir='dist')
freezer.addScript('main.py', gui_only=True)  # 对于GUI程序
freezer()

高级配置:

# 包含/排除特定路径
freezer = Freezer(distdir='dist', includes=['my_code'], excludes=['docs'])

# 设置图标
freezer.setIcon('app_icon.ico')

2. py2exe方案

py2exe是Windows专用工具,但更新不活跃。

基本使用: 创建setup.py

from distutils.core import setup
import py2exe

setup(windows=[{'script': 'main.py'}])

生成可执行文件:

python setup.py py2exe

3. PyInstaller方案

PyInstaller是目前最活跃的跨平台冻结工具。

安装:

pip install pyinstaller

基本使用:

pyinstaller main.py

创建单文件exe:

pyinstaller --onefile main.py

添加图标:

pyinstaller --onefile --icon=app.ico main.py

macOS平台冻结方案

1. py2app方案

py2app是macOS专用工具。

基本使用: 创建setup.py

from setuptools import setup

setup(
    app=['main.py'],
    setup_requires=['py2app'],
)

构建应用:

python setup.py py2app

2. PyInstaller方案

PyInstaller在macOS上同样适用。

创建标准Unix可执行文件:

pyinstaller main.py

创建窗口应用:

pyinstaller --windowed main.spec

自定义配置: 通过编辑.spec文件可以:

  • 绑定数据文件
  • 包含额外运行时库
  • 添加Python运行时选项

Linux平台冻结方案

1. bbFreeze方案

安装:

pip2 install bbfreeze

easy_install bbfreeze

基本使用:

bbfreeze main.py

2. PyInstaller方案

安装与使用:

pip install pyinstaller
pyinstaller main.py

最佳实践建议

  1. 跨平台需求:优先选择PyInstaller,它支持所有主流平台且维护活跃

  2. Windows专用:可以考虑py2exe,但注意它已多年未更新

  3. macOS专用:py2app是最佳选择

  4. 旧项目维护:如果维护Python 2.x项目,bbFreeze可能仍有价值

  5. 注意事项

    • 测试冻结后的程序在不同环境下的表现
    • 注意处理程序所需的资源文件
    • 考虑使用虚拟环境确保依赖纯净
    • 对于大型项目,单文件模式可能导致启动变慢

通过合理选择冻结工具,开发者可以轻松将Python程序打包为终端用户友好的可执行文件,极大简化分发流程。

Python-Guide-CN Python最佳实践指南。 The chinese translation of "Hitchhiker's Guide to Python". Python-Guide-CN 项目地址: https://gitcode.com/gh_mirrors/py/Python-Guide-CN

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘通双Elsie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值