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)
🦄文章&教程: 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