Python猫

Python 潮流周刊#53:我辈楷模,一个约见诺奖得主,一个成为核心开发者

这里分享的是 Python 潮流周刊第 53 期,原文发布于 2024-06-01。我们的付费专栏内容在发布一年后会免费开源,不少内容依然值得回看,愿大家读有所获。点击文末“阅读原文”,体验更佳。

温馨提示:在微信关注 Python猫,发送“优惠券”,即可领取 9 折优惠券,订阅专栏可享 15 元优惠。

本期分享了 12 篇文章,12 个开源项目。

🦄文章&教程[1]

1、我「接见」了诺奖得主[2]

真我辈楷模啊!我们周刊的常客 @frostming 由于开发了 PDM 的缘故,被 2018 年诺奖共同得主 Paul Romer 约见。文章分享了这段让人兴奋的经历,其中提及 Paul 在做一个帮助 Python 初学者搭建开发环境的 GUI 应用,想不到他会关注这种事,瞬间引起了我对他的好感。

2、450 天成为 Python 核心开发者[3]

又一位我辈楷模!@高天 仅花一年多时间为 CPython 作贡献,现已正式成为 Python 核心开发者。全球目前活跃的核心开发者不到 100 位,能成为其中一员实属难得啊。(附:这篇提名高天[4]的帖子,详细总结了他为 Python 做的贡献)

3、Python 如何比较浮点数和整数?[5]

文章从一个很奇怪的问题开始(见下方截图),介绍了 IEEE-754 双精度格式表示法,深入到 CPython 解释器源码解读了 Python 在比较浮点数和整数时的算法。不同于 C 和 Java 等语言隐式将整数转换为双精度,Python 具有无限精度的整数,因此设计了专用算法来实现比较。

超大整数与浮点数比较时的奇怪结果
超大整数与浮点数比较时的奇怪结果

超大整数与浮点数比较时的奇怪结果

4、JIT 和移除 GIL 都不是我最期待的 Python 3.13 特性[6]

Python 3.13 是较为独特的版本,本周刊已分享过不少内容。然而,作者最看重的特性却是新的dbm.splite3 ,解决了他使用 dbm+shelve 在不同操作系统不兼容的问题。

5、从事 Python 打包工作 6 年的不为人知的故事[7]

作者在 PyCon US 2024 上发表闭幕主题演讲,分享 6 年来关于 Python 打包的一些故事。这篇文章罗列了很多与演讲话题相关的链接和参考资料。

6、庆祝 Beautiful Soup 的 20 周年[8]

从上一则分享的博客中发现,Beautiful Soup 已经发布 20 周年了!它常用于爬取解析和网页内容,这篇周年纪念文章回顾了一些故事,同时主要想收集更多用户故事,计划出一本选集。这么长久健康发展的项目,开发者还富有人文情怀,值得点赞。

7、曾经最喜欢 Ruby,现在可能是 Python[9]

作者曾经很喜欢 Ruby 但不喜欢 Python,后来从 TypeScript 和 Rust 上发现了类型编程的强大之处,现在被支持类型提示和 match-case 的 Python 吸粉了,同时发现它还有一些很好的特性,所以已经转向了 Python 阵营。

8、使用 Postgres 的 Django 异步任务队列(不是 Kafka、Rabbit MQ、Celery 或 Redis)[10]

文章介绍了 Django 中可简单替代 Celery 和其它复杂方案的异步任务队列实现,即“Django 命令”。文章演示了相关功能的使用,以及对可能出现的问题(例如死锁)的考虑。

9、在 Streamlit 中支持异步 MongoDB 操作[11]

Streamlit 是构建仪表板的绝佳工具,但是异步操作数据源很麻烦,文章介绍了如何更好地将两者融合起来,分析了 4 种实现思路。用到Beanie 库异步操作 MongoDB。

10、LangChain 实战:利用 LangChain SQL Agent 和 GPT 进行文档分析和交互[12]

如何用 AI 数字化大量的文件,并回答用户提出的复杂的与数据相关的问题?文章介绍了用 Python 和LangChain来读取和分析 PDF 文档,用 SQLite 管理数据,用 LangChain SQL Agent 实现问答。

11、pyo3_asyncio:Python Asyncio 事件循环的 Rust 绑定[13]

pyo3_asyncio 提供方便的接口来管理 Python 和 Rust 的 async/await 操作,支持两者间的 future 转换,并管理两种语言的事件循环。文章介绍了相关的实现原理和使用方法。

12、PyPy 已经悄悄地为我工作了好几年了[14]

作者一直用pipx 安装 Python 依赖库,而且用的是 PyPy 解释器而不是官方的 CPython。多年来一直运行良好,没有明显差异,表明 PyPy 确实是挺成功的 CPython 替代品。

🐿️项目&资源[15]

1、llama-fs:基于 llama 3 的自组织文件系统[16]

根据文件内容和时间等条件自动重命名文件,以及管理文件目录,支持多种文件包括图片和音频。拥有 Electron 开发的前端和 FastAPI 支持的后端。(star 3K)

2、orjson:快速准确的 JSON 库,支持数据类、日期时间和 Numpy[17]

号称是最快的 Python JSON 库,比标准库和其它三方库更准确。以本机方式序列化 dataclass、datetime、numpy 和 UUID 实例。(star 5.7K)

3、asyncssh:在 asyncio 上提供 SSHv2 协议的异步客户端和服务器[18]

支持异步的 SSHv2 客户端和服务端实现,支持 SFTP 和 TCP,兼容 OpenSSH。单个 SSH 连接上同时多个会话,单个事件循环中多个 SSH 连接。(star 1.5K)

4、ipyblender-experimental:Jupyter 中引入 Blender[19]

Blender 是一款功能强大的开源 3D 图形和动画软件,用于 3D 建模、渲染、动画制作和视频后期处理。这个项目将它集成到了 jupyter notebook。

5、searxng:免费的互联网元搜索引擎,汇总各种搜索服务和数据库的结果[20]

尊重隐私的互联网元搜索引擎,汇总了来自 70 多种搜索服务的结果。支持自托管、无用户跟踪和分析、安全加密的连接、100 多个维护良好的实例。(star 9.7K)

6、rio:纯 Python 的 Web 开发框架,无需 JavaScript、HTML 和 CSS[21]

Python Web 框架,无需写一行 HTML、CSS 或 JavaScript。提供丰富的 React 风格组件,声明式 UI 框架,完全的类型安全。

7、buku:个人的文本迷你网络[22]

一个强大的书签管理器和个人文本迷你网络,也提供了 GUI 端。可从浏览器导入书签或从网络获取 URL 的标题、标签和描述。使用你喜欢的编辑器添加、撰写和更新书签。(star 6.3K)

8、resume-builder:纯 Python 开发的简历生成工具[23]

简单的低成本个人简历生成工具,生成 PDF 格式的文件。

9、more-itertools:比 itertools 丰富的可迭代对象操作[24]

标准库itertools 提供了很多函数,这个项目是对它的补充,提供的函数非常之多,建议查看文档。(star 3.5K)

10、tach:强制实施模块化、解耦的包架构[25]

用 Rust 开发的 Python 项目管理工具,强制要求模块化设计,定义和规范包依赖关系,使开发和维护更容易。

11、Zango:构建企业级应用/微服务的 Python Web 框架[26]

构建在 Django 之上的 Web 框架,支持在单体服务上托管多个应用或微服务。内置安全和合规组件,提供企业所需的应用组件。

12、pdm:支持最新 PEP 标准的 Python 包和依赖项管理工具[27]

一个现代的 Python 包管理工具,有简单且相对快速的依赖解析器,兼容 PEP-517 和 PEP-621,有灵活且强大的插件系统,支持安装 Python,像 pnpm 一样的中心化安装缓存,节省磁盘空间。(star 7K)

🐧 往年回顾[28]

Python潮流周刊#3:PyPI 的安全问题[29] (2023.05.27)

Python潮流周刊#4:Python 2023 语言峰会[30] (2023.05.31)

参考资料
[1] 

🦄文章&教程: https://xiaobot.net/p/python_weekly

[2] 

我「接见」了诺奖得主: https://frostming.com/2024/meet-with-paul/

[3] 

450 天成为 Python 核心开发者: https://www.bilibili.com/video/BV1of421972c

[4] 

提名高天: https://discuss.python.org/t/vote-to-promote-tian-gao/53895

[5] 

Python 如何比较浮点数和整数?: https://blog.codingconfessions.com/p/how-python-compares-floats-and-ints

[6] 

JIT 和移除 GIL 都不是我最期待的 Python 3.13 特性: https://blog.vslira.net/2024/05/jit-and-gil-removal-are-not-even-my.html

[7] 

从事 Python 打包工作 6 年的不为人知的故事: https://harihareswara.net/posts/2024/references-pycon-us-keynote/

[8] 

庆祝 Beautiful Soup 的 20 周年: https://harihareswara.net/posts/2024/celebrate-beautiful-soups-20th-anniversary/

[9] 

曾经最喜欢 Ruby,现在可能是 Python: https://sgt.hootr.club/molten-matter/maybe-i-like-python-now/

[10] 

使用 Postgres 的 Django 异步任务队列(不是 Kafka、Rabbit MQ、Celery 或 Redis): https://simplecto.com/djang-async-task-postgres-not-kafka-celery-redis

[11] 

在 Streamlit 中支持异步 MongoDB 操作: https://handmadesoftware.medium.com/streamlit-asyncio-and-mongodb-f85f77aea825

[12] 

LangChain 实战:利用 LangChain SQL Agent 和 GPT 进行文档分析和交互: https://juejin.cn/post/7373955162127532059

[13] 

pyo3_asyncio:Python Asyncio 事件循环的 Rust 绑定: https://awestlake87.github.io/pyo3-asyncio/master/doc/pyo3_asyncio

[14] 

PyPy 已经悄悄地为我工作了好几年了: https://utcc.utoronto.ca/~cks/space/blog/python/PyPyQuietlyWorking

[15] 

🐿️项目&资源: https://xiaobot.net/p/python_weekly

[16] 

llama-fs:基于 llama 3 的自组织文件系统: https://github.com/iyaja/llama-fs

[17] 

orjson:快速准确的 JSON 库,支持数据类、日期时间和 Numpy: https://github.com/ijl/orjson

[18] 

asyncssh:在 asyncio 上提供 SSHv2 协议的异步客户端和服务器: https://github.com/ronf/asyncssh

[19] 

ipyblender-experimental:Jupyter 中引入 Blender: https://github.com/kolibril13/ipyblender-experimental

[20] 

searxng:免费的互联网元搜索引擎,汇总各种搜索服务和数据库的结果: https://github.com/searxng/searxng

[21] 

rio:纯 Python 的 Web 开发框架,无需 JavaScript、HTML 和 CSS: https://github.com/rio-labs/rio

[22] 

buku:个人的文本迷你网络: https://github.com/jarun/buku

[23] 

resume-builder:纯 Python 开发的简历生成工具: https://github.com/koek67/resume-builder

[24] 

more-itertools:比 itertools 丰富的可迭代对象操作: https://github.com/more-itertools/more-itertools

[25] 

tach:强制实施模块化、解耦的包架构: https://github.com/gauge-sh/tach

[26] 

Zango:构建企业级应用/微服务的 Python Web 框架: https://github.com/Healthlane-Technologies/Zango

[27] 

pdm:支持最新 PEP 标准的 Python 包和依赖项管理工具: https://github.com/pdm-project/pdm

[28] 

🐧 往年回顾: https://xiaobot.net/p/python_weekly

[29] 

Python潮流周刊#3:PyPI 的安全问题: https://pythoncat.top/posts/2023-05-27-weekly3

[30] 

Python潮流周刊#4:Python 2023 语言峰会: https://pythoncat.top/posts/2023-05-31-weekly4

Image
Image