更加便捷地执行具有依赖的脚本

背景

在需求越来越复杂的今天,有不少脚本需要安装依赖才能够执行。
尤其是在python中,在你能接触到的任何脚本里面,网络请求几乎都是使用第三方库,比如requests或是httpx
requests减少了很多模板代码,在大多数情况下,如果因为依赖而去使用标准请求库,都是不值得的。
然而,如果将依赖全局安装,会导致污染全局环境的问题。
事实上,在我的电脑上,我连python都没装,我只装了uv和pdm。

PEP 723

https://peps.pythonlang.cn/pep-0723/#why-not-just-set-up-a-python-project-with-a-pyproject-toml

该提案指定了一种将依赖元数据写在脚本内的方案,如此一来python能够自动解析并且在环境中没有依赖的情况下就能够直接执行脚本。

# /// script
# requires-python = ">=3.11"
# dependencies = [
#   "requests<3",
#   "rich",
# ]
# ///

import requests
from rich.pretty import pprint

resp = requests.get("https://peps.pythonlang.cn/api/peps.json")
data = resp.json()
pprint([(k, v["title"]) for k, v in data.items()][:10])

js生态

作为最流行的两种脚本语言,很遗憾,nodejs或者npm没有提供类似的功能。
然而,新一代运行时bun提供了比起元信息更加简便的功能。

https://bun.com/docs/runtime/auto-install
image
虽然我圈出了缓存功能,但是我猜测python生态里面应该也是做了这个缓存功能的。
不过,省去了编写元信息的步骤,直接就可以运行,这一点还是比python强一些。
在这期间,我发现了一个有趣的项目。
https://eddmann.com/buns/

image

总结

pep 723的意义在于,有依赖的脚本可以近乎于无依赖脚本一样,只需要分发简单的文本,就能够执行,这在现在的网络环境下非常具有意义。

  • 在前不久,netcut下架了文件存储功能,现在只是一个简单的临时剪切板了
  • 由于只需要文本,你可以使用你的任何AI模型,在任何环境,网页、本地。
  • 任何的多一步操作都会加剧厌烦情绪,只多一步,会有很大不同

Make Scripts Great Again

posted @ 2026-01-27 17:18  魂祈梦  阅读(5)  评论(0)    收藏  举报