EP.010 / PUBLISHED

回到未来

pip install future

本期从一行可运行的 Python 文件出发,回到 Python 的发明与第一次公开分发,沿着文本与字节的断裂、future 的迁移工作台、包维护者的双版本负担,以及 Dropbox 和 OpenStack 的工程路径,追踪这场迁移怎样被拆成许多可以执行的中间状态。

2026年8月14日 41:03已发布
FINAL MASTER / release-approved
《回到未来》单集封面

单集简介

SHOW NOTES
回到未来-Python 2、Python 3 与十多年的迁移

一门以容易开始著称的语言,为什么会主动发布一个不能让大量旧代码原样运行的新版本?本期《原代码》从一行可运行的 .py 文件出发,回到 Python 的发明与第一次公开分发,沿着文本与字节的断裂、future 的迁移工作台、包维护者的双版本负担,以及 Dropbox 和 OpenStack 的工程路径,追踪这场迁移怎样被拆成许多可以执行的中间状态。

从两个解释器之间的兼容桥,到包、发行版、工具链和企业系统依次撤走旧路径:所谓“回到未来”,不是让过去在某一天同时消失,而是让越来越多的人终于不必再携带它。

时间轴

  • 00:00 一行代码,拨回 1989

  • 04:01 核心团队为什么选择 break

  • 07:29 普通开发者怎样过河

  • 12:31 包维护者站在桥中间

  • 17:57 一个产品与一张依赖图

  • 23:54 妥协不是一个动作

  • 29:04 生态怎样改变默认选项

  • 32:39 三种兼容预算

  • 37:20 回到现在与未来

本期资料

源码与工程记录

访谈与历史演讲来源

本版音频没有剪入第三方访谈或演讲片段;声音由 11 章旁白、原创片头《等待机器》和原创片尾《加速与混乱》组成。以下载体仅作为资料参考,未进入本版音频:

说明与延伸阅读

  • Python 3.5 不是本期认定的唯一生态转折点。2015 至 2016 年的包索引分析只能说明活跃库的 Python 3 供给在改善,不能把整个迁移归结为一个解释器版本。
  • Python 2.7 的支持期限从 2015 年延到 2020 年,为不能立即迁移的用户和供应商留下了时间;现有材料不足以证明“延期本身导致拖延”。
  • 2020 年标记的是 CPython 上游支持和许多共同期限的重要边界,不是所有 Python 2 系统同时消失的日期。pip、Linux 发行版、商业托管环境和嵌入式产品按各自节奏退出或保留旧运行时。
  • Dropbox 的双解释器、统一源码和灰度发布只说明其桌面客户端的迁移路径;OpenStack 的依赖、CI 与治理顺序只说明其受技术委员会治理的项目。两者都不是所有企业迁移的通用模板。
  • 本期把 strunicodebytes 作为技术显微镜,用来观察迁移成本怎样从语法进入数据边界;这不表示 Python 3 的全部不兼容变化都来自文本模型。
  • “Python 3 成为默认路径”在这里指 CPython 上游、主流工具链与多数活跃项目完成方向切换,不表示每个遗留系统都已支付完迁移成本。