『云头条』Python3 迁移怨声载道


今年1月1日 , Python 2代码库被冻结 。 从那天起 , 不再有Python 2进一步的向后移植(backport) , 实际上使这种语言及运行时环境成了过时的技术 。 核心开发人员Nick Coghlan在FAQ中解释道 , 因而结束了“核心开发团队为参考解释器同时维护Python 2和3长达约13年”的局面 。
『云头条』Python3 迁移怨声载道
本文插图
Python 2的最终版现正通过beta测试版和发行候选版阶段 , 预计最后一个生产级版本Python 2.7.18会在2020年4月推出 。
虽然Python社区中的大多数人一致认为Python需要大刀阔斧的改动——尤其是由于迫切需要的、早就该有的统一码(Unicode)支持 。 但是Python 2代码运行得好好的许多人颇感沮丧 。 有关这种迁移的真实故事在网上比比皆是 , 领导迁移工作的开发人员更是有话要说 。
『云头条』Python3 迁移怨声载道
本文插图
迁移故事
Chris Siebenmann上周巧妙地总结了一些挫折感 , 他的Twitter个人资料显示他是一名“过于投入的系统管理员” 。
Siebenmann在一篇博文中写道“没必要维护就可以运行的实用代码是一种资产;它就在那里 , 处理有价值的任务 , 不需要你做任何工作 。 为了不破坏系统(而不是添加任何功能)而必须做大量工作的代码是一种包袱;你得做一番工作 , 还引入了风险 , 却一无所获 。 ”
但是他的处境没有博得云/ AI架构师Phil Rhodes的多少同情 , 后者创办了Fogbeam Labs , 这家公司生产开源企业软件 , 他在Hacker News网站上提出了相左的观点 。 “大约12年来 , 人们始终知道需要开始迁离Python 2 。 如果你现在因Python 2即将消失而感到恐慌 , 很难不问‘你之前在等什么?’”
『云头条』Python3 迁移怨声载道
本文插图
大公司同样面临迁移方面的挑战 。 LinkedIn的高级软件工程师Barry Warsaw还是自上世纪90年代中期以来的Python指导委员会成员和Python核心开发人员 , 他在博文中描述了“在完成大概两个季度的规划和两个季度的执行之后” , LinkedIn为完成代码库的迁移开展了旷日持久的“横跨多个季度的工作” 。
开发团队先在图上列出了诸依赖项以确定工作优先级——列出了75个“基础性”存储库 , 然后创建了内部库的“双语”版本(可以使用Python 2或Python 3) 。
Warsaw提到多个团队和部门的工作时写道:“这项工作需要共迁移约550个代码存储库(库、应用程序和服务) 。 ”除了面向用户的服务外 , LinkedIn还在内部使用Python用于持续集成/持续交付(CI/CD)框架、命令行接口以及部署和数据科学工具 , 这种散乱的非整体式环境用Warsaw的话来说“包括数百种独立的微服务和工具 , 外加几十个支持库 , 它们都归分管不同存储库的独立团队拥有 。 ”
但是并非所有人都感到很高心 。 1月份 , 开发人员Wayne Rowcliffe在Hacker News上发帖称其工作场所终于“快要完成迁移到Python 3的工作” 。
“这项工作的最终结果是 , 上周我花了很大一部分时间来审核有70000行代码变更的合并请求(pull request) , 这是去年秋天进来的大约1万行变更请求中的最后一个合并请求 。 这一切都是我一位同事的杰作 , 他那无人羡慕的任务是梳理我们的整个代码库 , 以确定‘这是统一码 。 这是字节 。 这是我们需要编码/解码的API边界’等等 。 ”
“那是噩梦般的工作 , 很高兴我们捱过来了 。 ”
他在后来的评论中将策略归结为9个字 。 “我们运行了代码检查工具和测试套件 , 直到一切都过关 。 只是这时你面临100万行代码 , 要花不少的时间 。 ”