您好,欢迎收听 Python Bytes,我们将直接为您带来 Python 新闻和头条新闻。这是第 406 集,录制于 2024 年 10 月 21 日星期一。我是 Michael Kennedy。我是 Brian Ocken。本期节目由 Scout APM 赞助播出。稍后我们将向您详细介绍他们。如果您想与我们保持联系,请向我们发送节目创意。我们非常喜欢大家向我们发送创意,例如,“你应该看看这个”,因为 Brian 通常会以这样的方式开头,
我相信您已经听说过这个,但这里还是要说一下。我当时想,“我还没听说过这个”。我真的很感谢您发送它。所以请继续发送此类内容。这对我们帮助很大,对吧?绝对的。即使您,即使我们最多收到几份重复的内容,也没关系。是的,没错。如果您想与我们保持联系或向我们发送内容,请在 Mastodon 上找到我们或给我们发送电子邮件。链接位于节目说明的顶部。
并且请考虑订阅时事通讯,Brian 每周在节目播出后都会发送一份时事通讯,其中包含我们讨论过的所有内容,以便您查看。如果您没有时间收听,只需收到一封电子邮件即可。尽管我们更喜欢大家收听。这总是很有趣的。是的,我只是觉得人们不必在收听时记笔记。他们以后可以从电子邮件中获取。是的,所以 pythonbyst.fm,点击时事通讯按钮。
输入您的电子邮件。一切都会好起来的。Brian,我想听听你想先告诉我们什么。有什么事吗?
我认为人们应该为开源支付更多资金。因此,我将介绍开源承诺。我将先跳到 Django 网站,因为我就是在那里了解到的。因为 Django 社区、Django 软件基金会宣布他们支持开源承诺。这是什么意思呢?开源承诺实际上……
非常简单。您只需声明您将支付开源维护人员的费用即可。参与的最低限额是贵公司每年每位开发人员 2000 美元。因此,您不必计算您的销售人员。您不必计算清洁工、销售人员,
诸如此类。但是,您有多少开发人员每年 2000 美元似乎是相当合理的,因为您知道您从开源中获得了这么多的价值。因此,您进行自我报告。因此,您承诺这一点,然后您每年进行自我报告,点击博客或撰写博客文章来说明您是如何付款的。好吧,如果您仔细查看,会有一长串成员列表。我不确定这已经存在多久了,但是……
成员列表包括像 Sentry 这样的人,他们有 135 位开发人员,他们每位开发人员承诺 3,704 美元,这非常酷。Laravel 也在其中。因此,不仅仅是 Python 人员。是的,这里有很多很棒的名字。那么这是什么呢?哦,Button Down。这很好。即使是一位开发人员,他们也为每位开发人员支付 5000 美元,但这很好。无论如何,所以……
所以 Django 也表示要这样做。并帮助使 Django 社区更具可持续性。我认为这很棒。因此,他们正在承诺这一点。我不知道 Python 软件基金会现在有多少开发人员。就像我们知道他们至少有两名全职人员,但是……
我认为它正在增长。所以这很酷。所以我认为这是一个好主意。而且很整洁。我承诺您对开源的支持。对于金钱和开源来说,这是一个有趣的时期。我也认为这是一个好主意。但是有一些疯狂的事情。是的。看看 WordPress。太疯狂了。但这并不是承诺向开源捐款。那是……
完全不同的东西。我本来不打算把它放在那里,但我确实想指出 Armin Roeneker 有一篇很酷的文章,讨论了混合开源和金钱的必然性。还要向 Sentry 致敬,我相信这个开源承诺是他们的主意,而 Armin 则负责启动它。干得好,Armin。干得好,Sentry。好的。
我必须读一下。是的,TalkPython 的主要赞助商。我相信他们也赞助过 Python Byte,但肯定是 TalkPython。但是,如果您想阅读大量有趣的文章,我也会把那篇文章放在那里。但是,让我们继续讨论电视吧。让我们看一些电视节目吧,Brian。好的。今晚有什么节目?收看晚间新闻、三个火枪手,或者一些 Django?
我相信这个项目是由 Jeff Triplett 汇编的。干得好,Jeff。它被称为 Django TV,网址为 DjangoTV.com。这里的想法是这些视频来自,它就像一个小型 YouTube 之类的网站,但适用于所有会议。因此,您想在 DjangoTV 上查看 2023 年的 DjangoCon 会议。
砰的一声。它们都在那里。您想查找所有关于 HTMX 的视频。有很多,因为 HTMX 太棒了。依此类推,搜索它并查看我们在那里演讲和做事情的朋友们。
因此,无需深入探讨。但是,它很好,对吧?基本上,这是一个带有说明的精选列表。您总是想知道,例如,某件事是什么时候发布的?对吧?这通常是会议的问题。例如,我看到将会有一个很酷的演讲。它三个月前就发生了。最终,有人会把它放到互联网上。大概吧,我们认为。对吧?
我们不太确定。因此,您可以到这里点击 RSS 提要并订阅它。当您订阅时,所有 Django 视频都会开始弹出。很酷?- 是的,很酷。而且这是最新的。因此,如果您有旧视频或未在此列出的新会议视频,
尤其是与 genic 相关的。是的,修复它。确实要修复它。好的。好吧,这是我的主要内容。现在,在我们继续之前,让我快速向您介绍一下 Scout APM。他们是 Python Bytes 的大力支持者。我们非常感谢这一点。因此,如果您厌倦了花费数小时
试图找到影响您性能的问题的根本原因,那么您应该自己检查一下 scout apm,它们是领先的 Python 应用程序性能监控工具 apm
它可以帮助您更快、更轻松地识别和解决性能异常。Scout APM 可以关联瓶颈,例如内存泄漏、数据库查询缓慢、后台作业以及可怕的 N+1 查询(如果您在 ORM 中进行延迟加载,然后说“哦,不,为什么这么慢?”“你为什么要对应该是一个的查询进行 200 次数据库查询?”),因此您可以找出诸如此类的事情。它会将其直接链接回源代码,因此您可以减少在调试器和尾随日志中花费的时间,并且只需……
找到问题并继续前进。您会喜欢它,因为它是由开发人员为开发人员构建的。它易于设置。说真的,您可以在不到四分钟的时间内完成。太棒了。最好的部分是定价简单明了。您只需支付使用的数据费用,无需隐藏的超额费用或按座位定价。我刚了解到这一点,Brian,他们也有。
他们为所有开源项目免费提供专业版。因此,如果您是开源维护人员,并且想要为该项目使用 Scout APM,只需在他们的定价页面上给他们发送消息即可。因此,您可以开始免费试用并立即获得见解。访问 PythonBytes.fm/Scout。链接也在您的播客播放器节目说明中。请使用该链接。不要只是搜索它们,因为其他
否则,他们不会认为您来自我们这里。然后他们会停止支持该节目。因此,请使用我们的链接 pythonbytes.fm/scout。查看一下。它确实支持该节目。Brian,轮到你了。是的。我想稍微谈谈依赖项。因此,项目有依赖项。我们经常将它们放在 requirements.txt 文件或 pyproject.toml 文件中。但是有很多
但是有一个新的 PEP 刚刚发布。好吧,它已经发布了一段时间了。创建于 2023 年 11 月,但它刚刚得到解决。所以我认为它最近刚刚被接受。因此,决议日期为 10 月 10 日。因此,PEP 735 是 PyProject.toml 中的依赖项组。我第一次看到这个时,我想,“我们不是已经在 extras 中有了吗?”但是这个组解决了这个问题。
这个 pep。所以这个想法是我们有其他依赖项,而不是直接写入的,不是直接的项目依赖项,而是额外的内容,例如在构建文档或运行测试时。那么,我们如何指定它们呢?过去人们已经用过几种方法。其中一种是 pipe project 中的 extras。在此之前,甚至在我们拥有它之前,还有额外的 requirements.txt 文件。因此,一些项目有一个,
一个主要的 requirements.txt 文件,然后有些人有一些像 requirements dev 文件或 requirements doc 文件之类的东西,或者好几个,而真正的问题是没有围绕它的标准化,而且……然后也没有关于 requirements.txt 文件的真正标准化,它只是您可以传递给 pip install 的任何内容……它
例如,甚至标志等等,这实际上很有趣。无论如何,这是题外话。但是,所以我认为一堆 requirements 文件不是正确的答案。那 extras 呢?好吧,我很惊讶地发现,您可以放入额外依赖项中的 extras 是可选依赖项。这些是这些可能不会。我了解到它们与……一起使用。
那里,它们可能不会被静态定义。它们可以动态定义,而且,我甚至都不知道。我们需要它被静态定义,以便,以便,你知道,工具可以轻松读取它。嗯,
并且围绕使用 extras 也有一些其他限制。此外,我认为它只是我认为 extras 会让大家感到困惑。我知道它是 PyProject.toml 的一个特性,但我一开始对此感到困惑,不得不学习一段时间。它不知何故并不适合许多人的思维方式。但是这些依赖项组看起来不错。让我们来看一个例子。
因此,PEP 中的示例只是向您展示了如何获取依赖项组部分的块。然后有一些像测试一样的东西,其中包含像 PyTest 和 coverage 之类的东西的列表。文档可能包含 Sphinx 和 Sphinx read the docs 主题。用于进行类型检查的类型,例如 mypy 和 type requests。这些都完全有意义。然后有一个……
能够对其他内容进行分组的额外部分。因此,您可以拥有一个包含其他组的依赖项组。这很酷。然后还有一些关于例如如果它们相互冲突会发生什么的细节?因此,这定义明确,这很好。但我只是认为像这样,像一个小块一样,说,嘿,对于测试,我们使用 byte test 和 coverage。对于文档,我们使用这些,并且在依赖项组部分中使其简洁明了。我喜欢它。所以
这已被接受。我不确定它何时会出现在您附近的 pip 中,但是
这很酷。最后有一个关于它可能如何工作的示例,例如参考实现,它可能如何工作,例如说也许 pip install dependency groups 并能够安装它。但这取决于 pip、pip 维护人员来弄清楚这将如何真正使用。另一件有趣的事情是 extras 是 extras。extras 是档案管理员。
在正常事物之上,系统需要的一切。但是,例如,当您进行文档构建时,您实际上不必构建您的东西来构建文档。因此,这些依赖项组不会,它们不是额外的,它们是独立的。因此,您可以构建
安装文档依赖项而无需安装项目,这很有趣。无论如何,这就是,这就是他们强调的区别之一,即 extras 需要,它们添加到基本需求中。而这个,您可以为一种情况安装一组东西,为另一种情况安装另一组东西,而无需一定重叠它们,您可能会认为,无论如何,对吧?没关系。我只是安装了一些额外的东西,但是有些东西说在生产中有效,但在 Windows 上无法安装。是的。
例如,我认为上次我查看时,UV loop 在 Windows 上不起作用,但它就像在 Linux 上异步 IO 的加速器。好吧,如果使用 Sphinx,那么依赖库的兼容性也可能存在问题,也许 Sphinx 依赖于与您的项目依赖于不同的版本的某些东西。是的,是的,是的。说得对。确实如此。是的。
观众中的 Henry 补充说,extras 是公开的。这些不是。不幸的是,我们失去了保证已安装软件包的能力。有时您需要这个。有时您不需要。谢谢。是的。向您不知道即将发生的转变致敬。因此,在 DocPython 培训中,我们有一个免费课程,名为使用 Sphinx、Python 和 Markdown 进行静态站点和 API 文档,由 Paul Everett 讲解。他无意中干预了。
通过这里的课程向我介绍了下一个主题。实时重新加载,就像 pip install live reload 一样。你知道这个吗?不。因此,它是一种通用的文件监视器,主要关注 Web 应用程序,但您可以将其用于任何东西。它只是,您可以说,这是一组文件模式,多个文件模式。
您可以使用星号星号斜杠某些内容来查看子目录等等。您知道,文件模式疯狂,您可以随意使用。
然后,如果某些内容发生更改,它将只为您运行任意 shell 命令,并可能重新启动您的 Web 应用程序。如果您给它一个 Web 应用程序,例如 Flask 或 Django、Whiskey 应用程序之类的东西。这很酷。如果您查看文档,您会发现它很稀疏。就像它的描述字面意思是大约八个单词,一句话。它告诉您如何安装它,但是,好吧,但是我为什么要安装它呢?您查看 API 参考,它
基本上只是一个签名。因此,如果人们希望为项目做出贡献,那么提供一个小的示例,几段话会很棒。但我给您提供了一个我们可以从 Python Bytes 和 TalkPython 中使用的示例,类似的应用程序,因此此处用法相似。
因此,我与大家分享了一个 gist,如果您运行它,这里有一个小文件,您可以直接在您的终端中运行它,或者您启动它的方式,并在您处理项目时让它一直运行。
它将做什么,它将使用 Pathlib 跟踪根文件夹,然后找到 CSS 文件夹和 JavaScript 文件夹。然后它将针对执行捆绑的一些文件运行 Python。例如,在 Python Bytes 中,我们将六七个 CSS 文件最小化并捆绑到一个文件中,并按特定顺序共享到 CDN。是的。
因此,根据它的运行方式,如果您正在进行 CSS 设计之类的工作,您可能会也可能不会看到这些更改。JavaScript 也一样,对吧?因此,您可以做的是,您只需设置它,将其指向文件系统上的正确位置,说监视 CSS 文件夹,监视 JS 文件夹并运行 shell 命令。
它告诉 Python 运行执行捆绑的 Python 脚本。砰的一声,它就开始了。您只需在工作时在后台运行它即可。你怎么看?这很酷。有了这个,如果您更改 JavaScript 和 CSS,它会自动更新吗?对。它会查找搜索模式中任何文件的更改,例如星号星号斜杠 CSS 斜杠星号点 CSS 或其他任何内容,您知道。
然后,如果它看到这一点,它就会运行该命令,我给它的命令是运行 Python 来重新捆绑我们的资源。由于某种原因,因为可能发生的事情之一是,您知道,更改 CSS 文件的某些内容,忘记捆绑它,发布该站点。你会想,“嗯,为什么看起来这么奇怪?”“为什么没有改变?”但是包,
在生产中运行但在开发中不运行的版本不同步。然后它很奇怪,对吧?因此,只要您在某个地方运行它,它就会一直运行,那么您就没事了。酷。但它不必是。我的意思是,上下文是 Web,它非常关注静态网站,这非常烦人。您运行它的方式是说 server.serve,它实际上会在您给它的某个路由上启动一个 Web 服务器。但我不想看它。我不想通过它查看网站。我实际上……
只是想让它运行该文件。因此应该有一些辅助命令,例如在后台开始监视或类似的东西。启动小型 Web 服务器。您可以忽略它或将其指向任何地方并忽略它。然后您可以让它基本上在文件更改时运行您选择的 shell 命令,这非常灵活。是的。我想给他们一点赞扬,他们确实有……
关于如何在 Django 和 Flask 和 Bottle 中使用它。我不认识任何人还在使用 Bottle。不,不,我知道。但是,我的意思是,它的页面。但未必是正确的细节?是的,它并没有真正告诉你发生了什么。它只是向您展示了该怎么做,然后您可以想象,它会重新启动应用程序还是不会重新启动应用程序?是的。
它只会重新启动 CSS 吗?它会重新加载模板吗?有很多选项可能会发生,但它并没有真正说明。无论如何,这是一个很酷的项目。我希望看到更多描述,以便我可以获得更多关注。但是,是的,就是这样。Paul 在更改课程中的 markdown 文件时使用它,它会从 Sphinx 中运行 make HTML 以自动重建您刚刚输入的网站。哦,这很酷。是的。是的。
好的。你想跳到额外内容吗?让我们跳吧。好的。你想先说你的吗?是的,我先说。我的非常简短。所以有几件事。首先,我查看了我们的 Umami。那是我们的 Umami 分析。是 .is 吗?我认为是的。Umami.is。
是的,完美。我注意到一些不寻常的事情,即 14% 的听众来自德国。哦,这很酷。这很有趣,对吧?特别是考虑到,你知道,这是用英语。这不是他们的母语,但像澳大利亚人一样,德国人正在收听我们的内容。所以,谢谢德国。
也许我们应该举办一场比赛来尝试获得这个国家。没错。然后,并非我打算让这一集成为德国集,但这里有一些德国额外内容。但是德国公司 Hetzner,你听说过他们吗?他们就像 DigitalOcean、Linode 等等,AWS。
所以我听到一些人谈论过他们,他们拥有非常有趣的托管模式。例如,他们会为您提供超实惠的虚拟机、大量带宽等等。例如,对于 Digital Ocean 中的 8 GB、6 个,对不起,16 GB、8 个 CPU 服务器,价格为 112 美元。很难准确地说出 AWS 和 Azure 的价格,但我相信 AWS 为每月 200 美元,Azure 为每月 350 美元。好的。好的。像,
我来到 Hetzner 价格页面,选择共享 AMD,并将您的国家/地区设置为美国,
来吧。哦,你去哪里了?节省服务器的价格为 25 美元。哇。它附带 20 TB 带宽,快速计算一下,我相信这在 AWS 上大约为 2000 美元。这包含在 25 美元中。酷。那么新闻是什么呢?我为什么要提到这个呢?新闻是他们最近来到美国。他们过去只是一家……
只是一家欧洲公司。现在他们在美国上市了。因此,这为许多有趣的托管可能性打开了大门。你有什么东西要切换吗?我正在考虑尝试一下。我们将看看结果如何。我实际上问了 Macedon 的人,你们对这家公司有什么看法?我收到了很多德国人的回复,他们说他们在这家公司获得了许多良好的体验。所以我们将拭目以待。
好的。但如果我们这样做,我会告诉你的。我没有更改任何设置。但这很有趣,对吧,您可以以如此实惠的价格获得如此多的计算能力?是的,很酷。无论如何,这些是我的额外内容。轮到你了。我想强调的两篇博客文章非常整洁。K.J. Miller,当 AI 过度参与时,个人博客不再是个人博客。
所以我知道人们正在使用 AI 和类似聊天的东西来提出一些想法等等。这正是 KJ Miller 谈论的内容,这样做并不一定很糟糕,但要小心你在做什么以及你为什么要这样做。例如,提出想法,或者如果您卡在如何表达某些内容上,让某人帮忙是很棒的,但是
嗯,写作很难。因此,获得一些建议很好,但它仍然应该是你的声音。所以,呃,我喜欢,我想跳到他的建议。嗯,它说,显然,如果您正在阅读这篇文章并且没有让 chat GPT 为您总结它,嗯,您在某种程度上关心我的话。因此,您正在阅读某人的博客以了解他们的声音。所以在撰写您自己的博客时请记住这一点。
因此,特别是如果您正在撰写博客以尝试以后获得工作,那么仅仅重复一些 chat GBT 内容并复制粘贴它对您没有任何帮助。我们不需要更多这样的人。我的意思是,如果您这样做是为了尝试,您知道,为了销售某些东西而填充您的博客,我仍然不喜欢那样,但那是您的业务。但是,如果您试图这样做是为了突出您所写的内容,那么您需要写它。再说一次,
此外,如果您这样做是为了帮助您未来的自己,请使其个性化。此外,如果您没有写它,或者至少没有重写它,用您的声音写它,它就不会留在您的脑海中。所以你没有帮自己任何忙。有一点是,他谈到如果您这样做是为了用另一种语言创建内容,请了解该社区的写作风格,这
这很有道理。但我认为有些浏览器中已经内置了翻译工具。如果来自另一个国家的某人真的想阅读您的内容,也许他们无论如何都会这样做,如果他们想的话,他们会翻译它。嗯,
所以我对此没有太大的兴趣。但我认为我喜欢这些想法,如果您这样做是为了获得,您知道,建立您的个人品牌或将自己定位为某个领域的专家,使用 AI 来做到这一点实际上并没有帮助您。我认为人们可以弄清楚这一点,因为不同文章的写作风格会不一致。然后它也是你的个人事情。人们正在尝试……
联系你。所以做你自己。无论如何,那是一个额外内容。另一个是我没有想到的事情,我可能应该想到的是注意您的图像元数据。这是一篇文章丢失了。哦,来自 Stephanie Mullen,就在顶部,她在 PyCon 爱沙尼亚做演讲。无论如何,谈话内容是 EXIF 交换格式。基本上,图片包含大量元数据。
如果您不想将其发布到任何地方,您可能不想公开您的照片的确切位置。她谈论了如何使用工具来找出其中包含的内容,还谈论了删除它们的工具。然后甚至谈论使用预提交钩子来删除
您将其作为静态图像包含在您的 Git 存储库中。这很酷。如果您正在放置您的 Hugo 静态站点,我确信它没有任何内容。这是一个很酷的想法。我喜欢这个。这些只是我的两个额外内容。优秀。我将在 TalkPython 周四邀请 Stephanie。酷。三到四天后。甜蜜的。是的。
好的。我们的笑话呢?让我们开始吧。好的。这是一个愚蠢的笑话,但我喜欢它。这是老掉牙但又很好的笑话。我链接到一个精明的程序员博客,但我以前听过。基本上,是这样的,一个程序员的伴侣问他,嘿,你去商店买一条面包吗?如果他们有鸡蛋,就拿一打。过了一会儿,程序员带着 12 条面包回来,说他们有鸡蛋。
太字面了。我喜欢它。无论如何,这里有一些笑话。相当不错。好的。我没有读很多。我将去查看其中一些。太棒了。无论如何。优秀。是的,非常有趣。再次感谢您一起参加节目。各位,感谢您的收听。稍后再聊。再见。