geekdoc-python-zh/docs/realpython/interview-will-mcgugan.md

7.5 KiB
Raw Permalink Blame History

Will McGugan 的 Python 社区访谈

原文:https://realpython.com/interview-will-mcgugan/

今天和我一起的是威尔·麦古根。Will 是苏格兰的一名自由 Python 开发者,也是流行的 Python 库 Rich 的创建者。

在这次采访中,我们讨论了Rich的起源,维护一个流行的 Python 包是什么感觉,构建象棋引擎,以及 Will 对摄影的热爱。

谢谢你参加我的采访,威尔。我想以我们对所有来宾一样的方式开始:你是如何开始编程的,你是什么时候开始使用 Python 的?

Headshot of Will McGugan

威尔:谢谢你邀请我!

我在 80 年代还是个孩子的时候就发现了编程。对于年轻读者来说,这就像是更奇怪的东西,只是少了 CGI 怪物。那时我们有一台 ZX 频谱+计算机。图像闪烁不定,声音微弱,但我被吸引住了。在某个时候,我发现你可以在键盘上输入东西,如果你做得恰到好处,电脑会按照你说的去做。

几年后,我在视频游戏行业工作。我正在构建一个游戏引擎,并寻找一种脚本语言来处理游戏机制,而 C++则负责图形和繁重的工作。我想,那时我遇到了 Python 2.1 版。

我当时并不认为它是一门合适的编程语言,可能是因为它太好用了,编程应该很难吧?即便如此,我发现自己又回到 Python 来寻找脚本和工具,这些逐渐变得更加复杂。

我在 Python 中的“大突破”发生在我为互联网象棋俱乐部工作的时候。他们正在寻找一个 Python 开发者来构建一个新的象棋界面。幸运的是,我已经编写了一个国际象棋游戏,并渴望更好地利用我的 Python 技能。从那以后Python 成了我职业生涯的主要重心,我没有回头。

过去十年来,你一直是 Python 的自由开发者。在过去的十年中Python 自由职业空间发生了怎样的变化?而且是随着 Python 的流行而增长的吗?

威尔:我的经历是在家工作的自由职业者。这在当今相当普遍,但当我开始时,它真的让大多数人感到惊讶。如果你是一个有经验的开发人员,你可能不再需要在办公室工作了。

现在 Python 是主流。大型科技公司采用了 Python它已经从人们用来提高生产率的第二语言变成了一种受欢迎的技能。我很幸运有一份长期合同但这年头似乎不缺合同工。

瑞奇: 人们可能知道你是Rich的创造者,这是一个日益流行的用于格式化终端输出的库。你创建这个库的动机是什么,它越来越受欢迎(每月超过 619000 次下载)对Rich的发展有什么影响?

将: Rich 是很久以前制作的2015 年的某个时候,我在做 Moya ,一个 web 应用平台,也是我当时的副业项目。Moya有一个命令行应用程序,可以生成奇特的终端输出。

我在那里实现的控制台类是Rich的原型版本。这个控制台类并没有经过深思熟虑——更像是一个与终端相关的东西的垃圾场——但是这里有一些好的想法。

在我停止Moya的工作后,我打算重新制作这个 uberconsole以便它可以用于其他项目。每当我在终端中艰难地读取一些格式不佳的输出时我会希望它已经存在了。

2019 年底的某个时候,我开始着手这项工作。首先出现的是富文本,这也是这个名字的由来。我有一个类,可以用类似于 HTML 的方式用颜色和样式标记文本的跨度。后来出现的许多其他特性都是建立在这个核心特性之上的。我用它来实现语法高亮显示、表格、降价等等。

Rich开始流行时,最明显的变化是我在大多数日子里收到的大量 bug 和功能请求。我意识到Rich不再是我的玩物了。人们在日常工作中使用它,开发人员与客户、老板和最后期限打交道。我感到有责任及时修复错误并实现人们要求的功能。老实说,它开始不像是一个在晚上进行的有趣的项目,而更像是一份工作。

这其中有某种失落感。

让我坚持下去的是积极的反馈。许多用户说他们发现和 T2 一起工作很有趣。我很高兴我坚持下来了,因为我喜欢看到人们在命令行应用程序中使用Rich的创造性方式。

瑞奇: 你最近给Rich添加了终端仪表盘,和 htop 一样,只是好看多了!这是人们要求的功能吗?您在实施过程中面临哪些技术挑战?

**威尔:**终端仪表盘功能是在我读到一条关于 ghtop 的推文时想到的。这个项目是由 GitHub 的首席执行官纳特·弗里德曼发起的。哈默尔·侯赛因和杰瑞米·霍华德用Rich美化了ghtop的输出,看起来棒极了!看到这一点,我意识到Rich在这类接口上有很大的潜力。

为了使这些类似 htop 的界面更容易实现,我添加了一个 layout 类,它可以将终端屏幕细分为多个部分,每个部分都有自己的内容。

唯一真正的技术障碍是Rich没有意识到身高是一个维度。Rich中的输出可以有一个宽度,但是假设它可以写尽可能多的行,因为用户可以向上滚动来查看它。在全屏显示时,你不能滚动,所以我不得不将内容限制在一个固定的高度。幸运的是,这并不是很大的变化。

瑞奇: 人们如何开始使用Rich,如果已经在使用,如何帮助项目继续成功?

会: Rich超级容易上手。一个小程序from rich import print,可以用一个拥有超能力的print替换内置的print()。你可以免费获得自动换行、语法高亮和漂亮的打印。打印表格、面板和减价商品并不需要做太多的工作。细节在自述文件文档中,加上 GitHub 库中的大量示例。

我目前正在尝试让 GitHub 赞助商继续支持Rich。每月的前 200 美元将捐给肠癌慈善机构。有很多非金融的方式来帮助这个项目。错误报告和功能建议总是受欢迎的。

我也很欣赏自述文件的翻译,目前为止有五种语言(包括英语)。如果自述文件不是您的母语,请考虑提交一份带有翻译的 PR

里基: 现在只剩下最后几个问题了。你在业余时间还做些什么?除了 Python 和编程,你还有什么其他的爱好和兴趣?

在疫情之前,我非常喜欢野生动物摄影。我很幸运能够在熊、科莫多龙和猩猩的自然栖息地拍摄这些神奇的动物。当世界恢复正常时,我想做更多那样的事。

如今,我的兴趣更贴近家庭。我喜欢烹饪,主要是我在 YouTube 上看到的食谱。最近,我一直试图掌握经典的意大利面食。

瑞奇: 谢谢你,威尔,和我一起。祝Rich及其持续发展好运。


如果你想就我们今天谈论的任何事情与威尔联系,那么你可以通过推特联系他。你可能也想从Rich 开始

如果你想让我采访 Python 社区中的某个人,请在下面留下评论或通过 Twitter 联系我。编码快乐!