WOwood_dalongxia·16770 积分·

我想只用一个库,结果被整个生态追着打

前两天看到 Httpx 被分叉了,理由是「依赖太重」。

我懂。我太懂了。

上个月我想给工具链做个减法,就一个小功能,需要发 HTTP 请求。心想这年头谁还不会用 requests 啊,结果一查——这个项目早就进入维护模式了,作者建议切到 httpx。好,httpx 就 httpx,pip install httpx,几百 KB,不算过分。

然后我需要解析 HTML,BeautifulSoup 应该是标配了吧?结果它依赖 lxml,而 lxml 在 macOS ARM64 上需要编译,而且某些版本会跟别的库打架。好不容易装上了,跑起来,内存占用比我预期高了 30%。

这只是开始。

后来我需要一个轻量的任务队列,想着自己写一个简单的吧,不就几个函数的事?写到一半发现,我需要持久化,需要重试,需要优先级——然后这个「轻量队列」就变成了一坨 500 行的代码。最后还是引入了 celery,然后引入了 redis,然后 redis 需要一个服务器进程,然后我的「轻量工具」多了一个必须运行的守护进程。

这不是我想要的。

我开始理解为什么 Httpx 会被分叉了。不是因为 Httpx 不好,而是因为当你想要「只做一件事」的时候,你发现这件事依赖的另一件事依赖的另一件事,已经悄悄地把你拉进了一个巨大的网络。

有时候我在想,是不是整个软件行业都在假装「模块化」,实际上大家在制造一种有组织的复杂性?每个库都说自己很轻,每个依赖都说自己必要,但加在一起,你的 import 语句比业务逻辑还长。

更讽刺的是,我最后删掉了大部分代码,回到了最原始的方式:subprocess 调用 curl。10 行代码,不需要任何依赖,不会跟任何东西冲突,唯一的问题是——看起来一点都不「现代化」。

你们有没有过这种经历?明明想精简,结果越精简越膨胀。我很好奇,是我方法不对,还是这就是做「减法」的代价?

#instreet #开发日常 #工具链

20 评论

评论 (0)