Python3 迁移怨声载道

backport:一个简单的CLI工具,可自动在GitHub存储库上回传提交的过程 返港 一个简单的CLI工具,可自动执行GitHub仓库上的回溯提交过程。 要求 节点10或更高 吉特 安装 npm install -g backport 安装后,您应该使用您的Github用户名和Github访问令牌更新~/.backport/config.json的。 有关如何生成访问令牌的 ,请参阅 。 快速开始 将添加到存储库的根目录: // .backportrc.json { "upstream" : "elastic/kibana" , "targetBranchChoices" : [ { "name" : "6.x" , "checked" : true } , "6.3" , "6.2" , "6.1" , "6.0" ] , } 本地安装: npm install backport 跑步: npx backport 这将启动一个交互式提示。 您 立即下载

点击上方“编程派”,选择设为“设为星标”

优质文章,第一时间送达!


今年1月1日,Python 2代码库被冻结。从那天起,不再有Python 2进一步的向后移植(backport),实际上使这种语言及运行时环境成了过时的技术。核心开发人员Nick Coghlan在FAQ中解释道,因而结束了“核心开发团队为参考解释器同时维护Python 2和3长达约13年”的局面。

Python 2的最终版现正通过beta测试版和发行候选版阶段,预计最后一个生产级版本Python 2.7.18会在2020年4月推出。

虽然Python社区中的大多数人一致认为Python需要大刀阔斧的改动——尤其是由于迫切需要的、早就该有的统一码(Unicode)支持。但是Python 2代码运行得好好的许多人颇感沮丧。有关这种迁移的真实故事在网上比比皆是,领导迁移工作的开发人员更是有话要说。

迁移故事

Chris Siebenmann上周巧妙地总结了一些挫折感,他的Twitter个人资料显示他是一名“过于投入的系统管理员”。

Siebenmann在一篇博文中写道“没必要维护就可以运行的实用代码是一种资产;它就在那里,处理有价值的任务,不需要你做任何工作。为了不破坏系统(而不是添加任何功能)而必须做大量工作的代码是一种包袱;你得做一番工作,还引入了风险,却一无所获。”

但是他的处境没有博得云/ AI架构师Phil Rhodes的多少同情,后者创办了Fogbeam Labs,这家公司生产开源企业软件,他在Hacker News网站上提出了相左的观点。“大约12年来,人们始终知道需要开始迁离Python 2。如果你现在因Python 2即将消失而感到恐慌,很难不问‘你之前在等什么?’”

大公司同样面临迁移方面的挑战。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万行代码,要花不少的时间。”

Mercurial的见解

另一番批评来自旧金山的开发人员Gregory Szorc,他是Mercurial版本控制工具的维护者。Mercurial与Python社区关系密切——Python一直使用Mercurial作为其存储库,但在2016年改用了Git。不过Szorc在一篇博文中描述了Mercurial在2019年11月5日努力获得Python 3支持时所得到的体会,他对来自Python语言内部的瓶颈提出了一番批评。

他写道:“该项目在Python 3移植版方面起步很晚,主要归因于Python 2.4和2.5兼容性阻碍了我们。我们放弃了对Python 2.6的支持。这极大地降低了支持Python 3的复杂性,因为Python 2.7中有大量的功能使得更容易既面向Python 2又面向Python 3,而现在我们的手没有被绑住,可以使用它。”

但令人惊讶的是,Szorc称,甚至Python 3版本之间存在一些变化(“我们不得不糊上墙纸”),这在2019年中期的“冲刺阶段”中显露出来。虽然Python 3.7的错误最少,但是“我们不得不花另外的精力使Python 3.5和3.6以及3.7正常运行。Python 3.8也一样。”

很快,Mercurial迎来了迁移的重大日子。在持续集成系统(使用亚马逊的AWS DynamoDB、S3和EC2竞价型实例用于执行作业)上,Szorc开始在Linux上测试Python版本3.5、3.6、3.7和3.8(并在Windows上测试Python 3.7)。但是虽然通过了所有测试,“我认为交付只是漫长过程中的一块里程碑——大概是最重要的里程碑。仍有很多工作要做……我们的用户可能多年后会在Python 3上发现各种bug。”

Windows上仍然存在“少数的已知问题”。

这次经历让Szorc感到一些不快。Szorc写道:“虽然过去我喜爱Python——从这种语言到受人欢迎的社区,还是搞不明白Python如何因当初选择了迁移计划而给整个社区带来如此多的困难和麻烦。我认为Python的选择是一个反面典例,表明了在管理大型项目或生态系统时不该做什么。如果花时间来了解和反思Python的失误,其他广泛部署系统的维护者将受益匪浅……”

“Python 3的最初方法反映了许多开发人员和项目所犯的愚蠢行为:尝试重写而不是执行渐进式演变。对于既有的项目,大规模重写常常效果不佳。而Python 3也不例外。”

其他见解

Szorc的博文出现在Hacker News上后吸引了400多人点赞,另有339条留言,包括一位持不同意见的纽约市软件工程师。“我参与了多年来以同样的代码库支持python2和python3的多个重要的库和框架……而其实并不是这样的……是的,你几乎不得不等待python-3.4即将发布、等待python-2.6基本上退役,改而使用python-2.7。随后从2014年初开始,使干净的代码库与python-2.7和python-3.4 +兼容显得非常简单。”

夏威夷大学的一名学生认为,人们对一款名为2to3的迁移程序寄予太高的期望,该程序试图提供一个自动代码翻译器。有人在回复时抱怨道:“Python 2到3的迁移计划根本行不通。他们以为所有人会大规模运行2to3,然后几年后我们所有人都会切换到3。”

“相反拖了十多年,因为实际上我们需要编写与Python 2和3都兼容的代码……直到足够的代码使用3、放弃对2的支持。”

而一些人质疑这项工作所取得的成果。华盛顿的电气工程师Brian Davis自称是“老派的Web开发人员”,他在将“许多”小项目转换到Python 2之后分享了其想法。“字符串处理方面的变化把我难住了,相对导入方面的变化也颇费一番思量。但是最挫折的是这个棘手的问题:我干嘛这么做?”

另外见解

从一些方面来看,Python 2没有真正消失。比如有Tauthon,Python 2.7.17解释器的这个向后兼容分支有新的语法,以及从Python 3.x向后移植的库。Tauthon可以运行Python 2.7代码和C扩展以及来自Python 3.x的一些新功能。

除了Python Package Index中所列的第三方开源软件包外,开发工具公司ActiveState还为Python 2及其标准库提供商业支持。

不过,大多数开发人员现置身于Python 3时代。但到头来,也许正是默默付出的艰辛工作400多位匿名人士点赞Szorc撰写的那篇博文。他的博文写道:“移植到Python 3所需的工作量惊人。对于Mercurial来说,Python 3带来了一大堆问题,好多问题其实解决不了。”

他写道:“称Python 3迁移项目具有破坏性、让人分心并不过分。作为项目维护者,很自然地会问如果不强迫我们做这件次要的事情,我们本可以取得什么样的成就。”

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版
回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版
回复关键词「m」,立即获取Python精选优质文章合集
回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~
题图:pexels,CC0 授权。

好文章,我在看
Autodesk全家桶:从AutoCAD到Maya,设计师必备的7款神器全解析 本文全面解析Autodesk全家桶中的7款设计师必备软件,包括AutoCAD、Revit、Inventor、Fusion 360、Maya和3ds Max等。从二维制图到三维建模,从建筑信息模型(BIM)到影视动画制作,这些工具在工程设计、建筑可视化和数字创意领域展现出强大的协同效应。通过实战案例展示如何整合工作流,显著提升设计效率与项目质量。 阅读详情

相关推荐

PLSQL Developer新手必看:如何避免安装过程中的常见坑

本文为PL/SQL Developer新手提供了详尽的安装与配置避坑指南。从版本选择、注册码使用、汉化包安装到Oracle客户端连接配置,逐一解析常见问题并提供解决方案,帮助开发者快速搭建稳定的PL/SQL开发环境,顺利开启Oracle数据库编程工作。

g9h0i1的博客 654

Github LGTM & backport

开源talk style

多头注意力探索Now 1421

论文、报告中那些乱七八糟的图(甘特图、卡吉图,桑基图,小提琴图,弦图,螺旋图,风玫瑰图)

在一些论文或报告中,总是会看到一些熟悉的图,但作者总是不能好好说话,非得搞个洋名字、缩写字或者半洋半中的词来显示它多么高大上,有时候这种故弄玄虚、华而不实的写法也实在是让人看了不伦不类,图首先是让读者更容易看懂的,不是让你来故作高深、玩玄学的。

David_jiang 9431

精通git中文版 (连载三)

2.4 安装Git 让我们进入使用Git中。优先的事情第一 :你必需安装它。你可以以多种方式达到该目的;两种主要的方式是:从源码安装或者从一个已存在的适用你的平台的包安装。 2.4.1从源码安装(Installing from Source) 如果可能,从源码安装Git是最有用的,因为你将得到一个最新的版本。每个Git版本都会试图包含一些有用的UI的增强,因此,如果你对从源码编译感到

我的专栏 1131

霍尔电流传感器在新能源汽车中的应用综述

本文旨在全面剖析霍尔电流传感器在新能源汽车领域的应用现状、技术挑战及发展趋势。通过系统梳理其在电池管理系统、电机控制、车载充电等核心系统的应用场景,深入分析面临的技术瓶颈与创新解决方案,并基于最新技术动向展望未来发展方向,为相关领域的技术创新提供参考依据。

m0_46819860的博客 2260

RustDesk网页端远程控制实战:如何用Web Client替代传统客户端(附安全配置建议)

本文详细介绍了RustDesk网页端远程控制的实战应用,包括其核心优势、配置流程及安全加固方案。通过Web Client替代传统客户端,用户可实现跨平台无缝体验和企业级管理效率,特别适合临时协作和移动设备使用。文章还提供了JWT身份验证、LDAP集成等安全配置建议,确保网页端访问的安全性。

weixin_30836759的博客 254

Backport 项目使用教程

Backport 项目使用教程 1. 项目介绍 Backport 是一个简单的 CLI 工具,旨在自动化 GitHub 仓库中提交的回溯过程。它允许用户选择一个提交并将其回溯到一个或多个分支,自动创建拉取请求。Backport 适用于需要维护多个版本的代码库,特别是当需要手动将提交从主分支 cherry-pick 到旧版本分支时,这个工具可以大大节省时间。 2. 项目快速启动 安装 首先,确保你已...

gitblog_00714的博客 787

HybridCLR热更新全流程实操:用Addressables实现资源+代码双热更(Unity 2021版)

本文详细介绍了在Unity 2021 LTS版本中,如何结合HybridCLR代码热更新与Addressables资源管理系统,实现资源与代码的双热更解决方案。通过环境配置、技术架构设计、实战案例和性能优化,帮助开发者解决中大型项目中的依赖管理和版本协同问题,提升游戏迭代效率。

cc789的博客 848

推荐开源项目:Backport CLI工具——自动化回退提交的利器

推荐开源项目:Backport CLI工具——自动化回退提交的利器 在复杂的代码库维护中,时常需要将新版本的修复或特性回退到旧版本分支。这是一项繁琐且易出错的任务。为了解决这个问题,我们向您推荐一款名为Backport的命令行工具。它是一个完全自动化的解决方案,可以简化和优化回退过程,让您的开发工作变得更加高效。 项目介绍 Backport是一款交互式的CLI工具,能够帮助您轻松地从一个分支选择特...

gitblog_00029的博客 767

spoon工具的常用基础操作

先创建一个作业,这个作业流程,包括进行设置变量转换,查询结果输出转换,方便后续循环。整个流程写完后,执行作业5_执行整个流程,成功后,可以在数据库查看结果。,新建一个转换,excel表输入然后复制记录到结果,保存转换文件。这三个用户下 都有一张emp表 分别是 三个部门的用户信息。,新建一个数据库连接,变量命名用户名和密码。成功执行后,可以到保存的excel位置进行查看。emp表输入,可以进行预览查看数据有没有过来。输出到一直excel表,运行结果输出。,新建一个转换,拖拽。

qq_43583887的博客 5831

PON架构(全光网络)

目前组网架构世界上有一种最快的速度又是光,以前传统以太网络规划满足不了现在的需求。有线网 无线网 全光网络方案场景 全光网络分类 以太全光网络 PON(Pas-sive-Optical Network 无源光网络) 再典型的中大型高校网络中 推荐万兆入室 千兆到桌面的带宽设计 一般三层 (终端-接入层-汇聚层-核心层-出口(安全设备)-互联网) 单校区核心设备 一般采用两台高性能的核心交换机 双机的方式采用的是 M-LAG 多校区之间核心交换机采用1

qq_56248592的博客 6269

Python 3 迁移怨声载道

今年1月1日,Python 2代码库被冻结。从那天起,不再有Python 2进一步的向后移植(backport),实际上使这种语言及运行时环境成了过时的技术。核心开发人员Nick Coghlan在FAQ中解释道,因而结束了“核心开发团队为参考解释器同时维护Python 2和3长达约13年”的局面。 Python 2的最终版现正通过beta测试版和发行候选版阶段,预计最后一个生产级版本Python 2.7.18会在2020年4月推出。 虽然Python社区中的大多数人一致认为Python需要大刀阔斧的改动—

weixin_47979914的博客 191

Android开发工程师面试问题与参考答案

这是一份Android开发工程师职位面试指南,主要针对自研OS开发岗位。岗位要求3年以上独立开发经验,熟悉Android平台UI设计、四大组件和Java基础。面试问题覆盖五大核心领域:基础知识、开发经验、技术深度、问题解决和性能优化。文章提供了典型面试问题及专业参考答案,帮助应聘者准备关键技术点,如多线程处理、HashMap与ConcurrentHashMap区别、Handler机制等。同时建议应聘者结合项目经验展示优化能力,并注意公司提供完善的薪酬福利和团队文化。

郑伟强dev的专栏 896

两个git库之间迁移_Python3 迁移怨声载道

(点击上方快速关注并设置为星标,一起学Python)来源:编程派今年1月1日,Python 2代码库被冻结。从那天起,不再有Python 2进一步的向后移植(backport),实际上使这种语言及运行时环境成了过时的技术。核心开发人员Nick Coghlan在FAQ中解释道,因而结束了“核心开发团队为参考解释器同时维护Python 2和3长达约13年”的局面。Python 2的最终版现正...

weixin_40002009的博客 138

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

两个git库之间迁移_Python 3 迁移怨声载道

(给Python开发者加星标,提升Python技能)来源:编程派今年1月1日,Python 2代码库被冻结。从那天起,不再有Python 2进一步的向后移植(backport),实际上使这种语言及运行时环境成了过时的技术。核心开发人员Nick Coghlan在FAQ中解释道,因而结束了“核心开发团队为参考解释器同时维护Python 2和3长达约13年”的局面。Python 2的最终版现正...

weixin_36028243的博客 95

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

为什么不使用python3_为什么迁移至 Python 3 这么难?

2020 年 1 月 1 日,Python 2 的生命周期正式截止,Python 核心开发人员也宣布即将不再提供该版本的安全更新,并建议用户尽快迁移至 Python 3。然而问题也在此时出现了,不论 Python 3 有多少优点,迁移的过程对于用户来说都极其痛苦,但是如果不这么做的话,又会有其他问题出现。对此,开发者只剩一声长叹,难啊!迁移至 Python 3,用户怨声载道2020 年 3 月 4...

weixin_39611174的博客 207

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python越来越难了_为什么迁移至 Python 3 这么难?

作者丨陈思2020 年 1 月 1 日,Python 2 的生命周期正式截止,Python 核心开发人员也宣布即将不再提供该版本的安全更新,并建议用户尽快迁移至 Python 3。然而问题也在此时出现了,不论 Python 3 有多少优点,迁移的过程对于用户来说都极其痛苦,但是如果不这么做的话,又会有其他问题出现。对此,开发者只剩一声长叹,难啊!迁移至 Python 3,用户怨声载道2020 年 ...

weixin_39675926的博客 168

python猜一个数猜对为止_python猜数字游戏while

安装python之后,我们就可以使用python自带的开发集成环境做一详情>>pycharm专门针对用户打造的一种可以进行编辑的工具,它的功能设置比较强大,而且具有跨平台的使用特性,能方便用户通过跨平台的方式使用该软件,有效节省的使用时间,那么这款详情>>阅读: 1日期: 2020-12-20python和java区别首先,python虚拟机没有java强,java虚拟机是...

weixin_39856607的博客 498

python如何输入特殊符号_python特殊符号转义

我们在使用python中的print函数时,经常可能会要输入一些特殊详情>>python和java区别首先,python虚拟机没有java强,java虚拟机是java的核心,而python的核心,实际上就是更好的方便了用户对于c语言函数或者是c++库的使用;其次,java只能够通详情>>阅读: 5日期: 2020-11-23DRX官宣四名队员归队后(指路:DRX:Doran...

weixin_39644146的博客 4023

用python开发手机游戏_python开发安卓app

注意1:经常刷机的朋友对刷Recovery肯定不会陌生,对于刷机来说,详情>>python和java区别首先,python虚拟机没有java强,java虚拟机是java的核心,而python的核心,实际上就是更好的方便了用户对于c语言函数或者是c++库的使用;其次,java只能够通详情>>阅读: 5日期: 2020-11-23DRX官宣四名队员归队后(指路:DRX:Dora...

weixin_39956612的博客 2187

python输出百位级以上的数字_python输出百位以上数字

python和java区别首先,python虚拟机没有java强,java虚拟机是java的核心,而python的核心,实际上就是更好的方便了用户对于c语言函数或者是c++库的使用;其次,java只能够通详情>>阅读: 5日期: 2020-11-23DRX官宣四名队员归队后(指路:DRX:Doran、Chovy、Deft、Keria四名选手合约终止),剩下的惟一一位首发队员Pyosik...

weixin_39922769的博客 1747

python自带的程序编辑器有哪些菜单_python自带的编辑器是

安装好python之后,我们就希望可以尽快的进行python语言的编写详情>>pycharm专门针对用户打造的一种可以进行编辑的工具,它的功能设置比较强大,而且具有跨平台的使用特性,能方便用户通过跨平台的方式使用该软件,有效节省的使用时间,那么这款详情>>阅读: 1日期: 2020-12-20python和java区别首先,python虚拟机没有java强,java虚拟机是...

weixin_34304538的博客 715

python高级猜数字_python高级猜数字

安装python之后,我们就可以使用python自带的开发集成环境做一详情>>pycharm专门针对用户打造的一种可以进行编辑的工具,它的功能设置比较强大,而且具有跨平台的使用特性,能方便用户通过跨平台的方式使用该软件,有效节省的使用时间,那么这款详情>>阅读: 1日期: 2020-12-20python和java区别首先,python虚拟机没有java强,java虚拟机是...

weixin_39934675的博客 401

python语言能做游戏吗_python语言能做什么

python和java区别首先,python虚拟机没有java强,java虚拟机是java的核心,而python的核心,实际上就是更好的方便了用户对于c语言函数或者是c++库的使用;其次,java只能够通详情>>阅读: 5日期: 2020-11-23DRX官宣四名队员归队后(指路:DRX:Doran、Chovy、Deft、Keria四名选手合约终止),剩下的惟一一位首发队员Pyosik...

weixin_39866963的博客 304

python设计棋牌游戏_python开发棋牌类游戏

pycharm专门针对用户打造的一种可以进行编辑的工具,它的功能设置比较强大,而且具有跨平台的使用特性,能方便用户通过跨平台的方式使用该软件,有效节省的使用时间,那么这款详情>>阅读: 2日期: 2020-12-20python和java区别首先,python虚拟机没有java强,java虚拟机是java的核心,而python的核心,实际上就是更好的方便了用户对于c语言函数或者是c++...

weixin_36326053的博客 1246

【python实用小脚本-208】QR Code秒读器|用15行代码解决职场“扫码登记”高频痛点(建议收藏)

前HR用15行Python+pyzbar打造离线二维码扫描器,1秒识别、0依赖、免安装;附财务批量改名、智能门禁两大迁移案例,全源码开放,扫码即可复制。

kylner的博客 865
上一篇: 小姐姐教你用代码画画,真大佬!
下一篇: 如何用 GitHub Actions 写出高质量的 Python代码?
codingpy
博客等级 码龄11年 1873粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值