---
title: 'Python 潮流周刊#36：Python 打包生态依然不乐观'
description: '本期周刊分享了 12 篇文章，12 个开源项目'
pubDate: 2024-01-20
author: '豌豆花下猫'
---

你好，我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容，大部分为英文。本周刊开源，欢迎[投稿](https://github.com/chinesehuazhou/python-weekly)。另有[电报频道](https://t.me/pythontrendingweekly)作为副刊，补充发布更加丰富的资讯，欢迎关注。


## 🦄文章&教程

1、[一年后的 Python 打包：回顾 2023 年 Python 的打包](https://chriswarrick.com/blog/2024/01/15/python-packaging-one-year-later/)

作者一年前吐槽了 Python 打包的悲惨状况，一年后再看，有什么改善么？还是变得更糟糕了呢？文章讨论了社区里主流的打包工具、PEP 标准及其落实情况，尽管有不少新东西，但看起来还是很黯淡。

2、[PyCon 2023（美国和澳大利亚）所有演讲视频](https://techtalksweekly.substack.com/p/all-pycon-2023-talks-sorted-by-views)

文章整理了去年 PyCon US 和 Python AU 的 243 个视频，按照 Youtube 播放数排序。都不算多，而且第一名和第二名的差距非常之大。

![PyCon 2023 视频播放量](https://img.pythoncat.top/2024-01-19_pycon.png)

3、[Python 的 Synchronized](https://thiagowfx.github.io/2024/01/synchronized-in-python/)

Java 中用`synchronized` 关键字可以保证变量是线程安全的，Python 中有什么东西可以达到相同效果么？文章介绍了`threading ` 模块的 Lock + 上下文管理器 + 装饰器的实现方案。

4、[更快的 Python C 扩展的类型信息](https://bernsteinbear.com/blog/typed-c-extensions/)

PyPy 是一个 Python 解释器，它的 C API 兼容层存在一些性能问题，作者正在研究使 PyPy 的 C API 变快方法，文章介绍了他们所做的工作。

5、[通过示例比较 Kotlin 和 Python 中的协程](https://medium.com/@ms.carmen.alvarez/comparing-coroutines-by-example-in-kotlin-and-python-7e60746eae18)

作者在用 Python 和 Kotlin 开发时，都接触了协程，因此写了几篇文章来比较它们的用法、分析它们的细节和工作原理，涉及文件读写、HTTP 请求、序列和生成器，可以加深你对协程的理解。

6、[Pydantic 处理 1970 年代时间的奇特问题](https://dev.arie.bovenberg.net/blog/pydantic-timestamps/)

Pydantic 在处理 Unix 时间戳时会猜测是以秒还是毫秒为单位，但这遇到 1970 年的时间就有问题啦！众所周知，计算机世界的时间戳从 1970-1-1 开始（UNIX 纪元），这意味着早期的时间戳位数少，若当成秒级换算的话，谬之几十年！

7、[浏览器上的代码游乐场](https://antonz.org/in-browser-code-playgrounds/)

如何在浏览器上实时执行代码片段？作者基于 WASI，开源了一个工具，可以在浏览器上执行 Python、PHP、Ruby、Lua、Javascript 和 SQLite 代码片段。

8、[SQLite 的“database is locked”错误](https://blog.pecar.me/django-sqlite-dblock) 

多线程环境中使用 SQLite，可能会出现“database is locked”错误，文章分析了两大原因（SQLite 等待锁超时、在事务读取后写入），介绍了对应的解决方案，特别提及 Django 本身提供的解决方案。

9、[数据处理神器可不止 Pandas 哦，还有 Polars，全方位解析 Polars](https://www.cnblogs.com/traditional/p/17959796)

Polars 是基于 Rust + Arrow 实现的高性能 Python 数据处理库，这篇教程全方位介绍了 Polars 的相关知识。（附：另一篇同样主题的文章 [Polars 实用教程](https://pbpython.com/polars-intro.html)）

10、[用 Python 函数构建 HTML 组件](https://ricardoanderegg.com/posts/python-build-html-components-lxml/)

如何在 Python 中实现类似 React 的组件？作者准备用纯 Python 函数生成 HTML，使用`lxml` 库来渲染，文章介绍了一些基本的尝试，验证可行性。

11、[500 行 SQL 实现一个 GPT](https://explainextended.com/2023/12/31/happy-new-year-15/)

用 SQL 能否实现一个大语言模型呢？ChatGPT 说这超出了 SQL 的能力。但是，作者不这样认为！文章详细介绍了实现 GPT 所需的相关知识，最终用 500 行 SQL 实现了出来！（附：作者从 2010 年以来每年用 SQL 实现一件不可思议的事，比如 [用 SQL 求解魔方](https://explainextended.com/2022/12/31/happy-new-year-14/) 、[用 SQL 实现量子计算机模拟器](https://explainextended.com/2021/12/31/happy-new-year-13/) ……）

🎁**Python潮流周刊**🎁每 30 期为一季，第一季的精华内容已整理成一篇，方便你随时查看。在线访问地址：[Python 潮流周刊第一季精华合集（1~30）](https://pythoncat.top/posts/2023-12-11-weekly)

## 🐿️项目&资源

1、[niquests：使用 HTTP/3、HTTP/2，支持异步的 requests](https://github.com/jawah/niquests)

requests 库的直接替代，具有 HTTP/3、HTTP/2、多路复用连接、系统 CA、证书吊销、HTTPS/TLS/QUIC 或 UDP 上的 DNS、异步、DNSSEC，消除了 requests 的很多缺点。

2、[slotscheck：确保你的\_\_slots\_\_正常工作](https://github.com/ariebovenberg/slotscheck/)

Python 的 `__slot__` 变量可以减少实例内存，防止添加动态属性。但要正常工作，所有基类都要实现它。这个库可以检查它是否损坏、重叠、冗余，提供了 pre-commit 钩子。

3、[panel：强大的数据探索和 Web 应用框架](https://github.com/holoviz/panel)

支持拖拽小部件、绘图、表格和其它可查看的 Python 对象组合到自定义分析工具和仪表板中，支持大量可视化工具，支持 **ipywidgets** 。（star 3.7K）

![一边编辑，一边查看实时效果](https://img.pythoncat.top/2024-01-20-panel.gif)

4、[QAnything：基于任何东西的问答](https://github.com/netease-youdao/QAnything)

支持任意格式文件或数据库的本地知识库问答系统，可断网安装使用。一键安装部署，支持跨语种问答，支持选择多知识库问答。（star 1.9K）

5、[Bert-VITS2-ext: 基于 Bert-VITS2 做的表情、动画测试](https://github.com/see2023/Bert-VITS2-ext)

TTS 同步产生脸部表情数据、声音到表情、生成身体动画。

6、[weread-exporter: 将微信读书中的书籍导出成 epub、pdf、mobi 等格式](https://github.com/drunkdream/weread-exporter)

通过 Hook Web 页面中的 Canvas 函数，获取文本及样式等信息，转换成 Markdown 格式，最终转换成 Epub、PDF 和 Mobi 格式。

7、[leetcode-solution：用 Python 解各种 LeetCode 问题](https://github.com/hogan-tech/leetcode-solution)

这个项目收录了 400 多道 LeetCode 题目和不同语言的答案。

8、[CapsWriter-Offline: CapsWriter 离线版，好用的 PC 端语音输入工具](https://github.com/HaujetZhao/CapsWriter-Offline)

一个 PC 端的语音输入、字幕转录工具，完全离线、无限时长、低延迟、高准确率、中英混输、自动阿拉伯数字、自动调整中英间隔。支持热词功能、日记功能、转录功能等。

9、[surya：任何语言的准确行级文本检测和识别 （OCR）](https://github.com/VikParuchuri/surya)

一个多语言文档 OCR 工具包，支持准确的行级文本检测。缺点是不适用于图片和手写文本。（star 3.6K）

10、[GPT-SoVITS：1分钟的语音也可训练一个好的 TTS 模型](https://github.com/RVC-Boss/GPT-SoVITS)

强大的短镜头语音转换和文本转语音 WebUI，Zero-shot TTS、Few-shot TTS、跨语言支持、W	ebUI 工具。（star 2.7K）

11、[trt-llm-rag-windows：使用 TensorRTLLM 在 Windows 上创建 RAG 聊天机器人](https://github.com/NVIDIA/trt-llm-rag-windows)

一个 Windows 上的 RAG 演示项目，基于 LLaMa 2 13B 模型、TensorRT-LLM 和 FAISS 向量搜索库。

12、[LangGPT：让每个人都能成为提示词专家](https://github.com/EmbraceAGI/LangGPT)

以结构化、模板化的方式编写高质量 ChatGPT prompt，克服普通 Prompt 创建时缺乏系统性、缺乏灵活性等缺点。（star 2.8K）

## 🐼欢迎订阅

- [微信公众号](https://img.pythoncat.top/python_cat.jpg)：除更新周刊外，还发布其它原创作品，并转载一些优质文章。（可加好友，可加读者交流群）
- [博客](https://pythoncat.top) 及 [RSS](https://pythoncat.top/rss.xml)：我的独立博客，上面有历年原创/翻译的技术文章，以及从 2009 年以来的一些随笔。
- [邮件](https://pythoncat.substack.com) 及 [RSS](https://pythoncat.substack.com/feed)：在 Substack 上开通的频道，满足你通过邮件阅读时事通讯的诉求。
- [Github](https://github.com/chinesehuazhou/python-weekly)：你可以获取本周刊的 Markdown 源文件，做任何想做的事！
- [Telegram](https://t.me/pythontrendingweekly)：除了发布周刊的通知外，我将它视为一个“副刊”，补充发布更加丰富的资讯。
- [Twitter](https://twitter.com/chinesehuazhou)：我的关注列表里有大量 Python 相关的开发者与组织的账号。