Python新星uv解析:如何重塑十年生态系统开发效率
来自英国的天文学家和科学传播者Emily L. Hunt博士在自己的博客上发表了一篇文章,盛赞"uv是近十年来Python生态系统中最令人振奋的革新"。
uv,这个我们确实该好好认识一下了。
这款用Rust编写的Python包和项目管理工具近日在Hacker News上再度引发广泛关注。原因很简单,Emily L. Hunt博士在文章中由衷赞叹:"uv是Python生态近十年来发生的最美好的事情"。
虽然文章篇幅不长,但被分享到Hacker News后却引发了热烈讨论,收获了上千点赞。当然,许多讨论的焦点都集中在了Rust语言上。


不过在深入阅读这篇博客之前,我们先简单了解一下uv这个项目本身。
简单来说,uv是一个面向Python生态系统的高速"一体化"工具,可用于包管理、环境管理、项目初始化、工具执行、Python版本管理等。其由Astral公司开发,底层使用Rust语言实现,以追求极致性能。对于已有的工作流、pip、virtualenv、pipx、poetry等工具,uv提供了极强的兼容性,在某些场景下速度可提升10到100倍。

截至目前,该项目在GitHub上已经收获了超过7.1万星标!

接下来,我们就来看看为什么说"uv是近十年来Python生态系统发生的最好的事情"。

都2025年了。难道安装Python、管理虚拟环境、在同事间同步依赖,还非得那么费劲吗?
嗯...真的不用!
最近,一款名为uv的杰出新工具横空出世。它彻底革新了Python的安装和使用方式,让一切都变得无比简单。
uv是一款免费的开源工具。它由Astral打造,这家小型创业公司过去几年一直在持续产出优秀的Python工具,比如大名鼎鼎的linter——Ruff。uv能做到:
为你安装任意Python版本安装软件包管理虚拟环境极速解决依赖冲突
最棒的是,在我看来,uv在上述所有方面都比其他任何工具做得更好。
它的速度快得惊人。它由Rust语言编写,并且几乎兼容所有操作系统或平台。
安装 uv
uv的安装非常简单。有几种方法,但我认为最简单的是这个单行命令。
对于Linux和Mac用户:
curl -LsSf https://astral.sh/uv/install.sh | sh
或者,Windows用户在PowerShell中使用:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
之后,你就可以通过uv命令来使用它了。
安装uv不会搞乱你现有的任何Python环境。它是一个完全独立的工具,所以你可以放心地安装并试用。
管理项目的Python
无论开发什么Python项目,使用虚拟环境都是一个好习惯。
虚拟环境能将不同项目的代码和依赖相互隔离开。以我的经验来看,尽早养成这个习惯能省去未来很多麻烦。
uv天生就会使用虚拟环境。因此,一旦你开始用uv,上手虚拟环境也会变得非常容易。
uv会根据当前目录下pyproject.toml文件的配置来构建Python环境。
pyproject.toml文件是指定Python项目依赖的标准、现代格式。一个最精简的pyproject.toml文件可能如下所示:
[project]name = "my_project"version = "1.0.0"requires-python = ">=3.9,<3.13"dependencies = [ "astropy>=5.0.0", "pandas>=1.0.0,<2.0",]
简而言之,它只需要指定使用哪个Python版本和一些依赖项。当然,加上项目名称和版本号也是个好主意。
一旦你初始化了项目,或者项目里已经有了pyproject.toml文件,使用uv就变得非常简单。
你只需要在pyproject.toml文件所在的目录中运行:
uv sync

这个命令会为你执行以下操作:自动安装一个有效的Python版本,在目录下的.venv文件夹中安装所有依赖,创建一个新的虚拟环境,在你的目录中创建一个uv.lock文件,该文件会保存每个已安装包的确切、平台无关的版本。这意味着你的同事可以完全复刻你的Python环境。
用 uv 创建新项目
要用uv启动一个新的Python项目,你可以运行:
uv init
这个命令会为你创建一个新项目,包含pyproject.toml、README.md和其他重要的模板文件。
这个命令还有很多变种,比如uv init --bare和uv init --package等等。我建议你运行uv init --help来查看所有选项。
当你有了 pyproject.toml 文件
一旦你初始化了项目,或者项目里已经有了pyproject.toml文件,使用uv就变得非常简单。
你只需要在pyproject.toml文件所在的目录中运行:
uv sync
这个命令会为你执行以下操作:自动安装一个有效的Python版本,在目录下的.venv文件夹中安装所有依赖,创建一个新的虚拟环境,在你的目录中创建一个uv.lock文件,该文件会保存每个已安装包的确切、平台无关的版本。这意味着你的同事可以完全复刻你的Python环境。
uvx:跳过以上步骤,立即运行工具!
但有些时候,你可能只想快速运行一个工具。
比如,临时用Ruff检查下代码,或者在没有环境时启动一个Jupyter notebook服务器,甚至只是想快速启动一个装了pandas的IPython会话来打开某个文件。
uv tool命令让这一切变得异常简单。
运行像下面这样的命令:
uvx ruff
uv会自动下载你需要的工具,并在一个一次性虚拟环境中运行它。一旦这个工具被下载过,uv就会利用缓存,下次再运行就会快如闪电。
我有很多场合会用到这个功能。一个常见的场景是,快速启动一个安装了pandas的IPython会话,这样我就可以快速打开并查看一个parquet文件。例如:
uvx --with pandas, pyarrow ipython
或者,也许只是想启动一个Jupyter Lab服务器,好让学生发来的Jupyter notebook能快速打开。
老实说,我丝毫不会因为需要使用工具而感到不便,因为uvx总能在我需要时提供一张"万能通行证"。
如果这还不能说服你
我是在去年第一次发现uv的。
当时,我正和其他可爱的开发者们一起构建The Astrosky Ecosystem。这是一个很棒的旨在为天文学家们构建开源在线社交媒体集成项目。
但我们有很多开发者,大家在不同的操作系统上异步工作。很快,管理Python安装就成了一个艰巨的任务。
对我们而言,uv是一个极其强大的简化工具。我们现在终于能使用完全一致的Python安装环境了。这一点尤其重要,因为我们用的一些实验性依赖,每个版本都有破坏性改动。
在GitHub Actions中,我们计划使用uv来快速构建Python环境并运行单元测试。
在生产环境中,uv已经管理着我们所有服务器的Python版本。
能够确信所有机器上的Python和软件包安装总能得到一致且正确的处理,这种感觉真是太棒了。
这就是为什么我说,uv是近十年来Python生态系统发生的最好的事情。

你已经用上uv了吗?对此有什么看法?
相关攻略
近日,斯坦福大学与 SambaNova Systems 合作发表了论文《Agentic Context Engineering: Evolving Contexts for Self-Improvi
Game-TARS基于统一、可扩展的键盘—鼠标动作空间训练,可在操作系统、网页与模拟环境中进行大规模预训练。 用鼠标和键盘打游戏的智能体,这就来了!它不仅能在《我的世界》中和普通玩家一较高下。还能玩
谷歌DeepMind再出重拳,集结全球五大顶尖机构,以AI之力直指数学界圣杯!同时,陶哲轩也发出冷静警示:须警惕AI滥用带来的潜在风险。 今天,谷歌DeepMind重磅发起「AI赋能数学计划」,集结
最近,一篇名为《Language Models are Injective and Hence Invertible》的论文在学术界和科技圈引起了广泛讨论,甚至连老马的 Grok 最新也下场转发。这
DeepAnalyze-8B 能够模拟数据科学家的行为,在真实环境中主动编排、优化操作,最终完成复杂的数据科学任务。 来自人大和清华的研究团队发布了DeepAnalyze,首个面向自主数据科学的ag
热门专题
热门推荐
在新能源汽车领域,自主品牌长期占据主导地位,合资品牌曾一度被边缘化,甚至被部分消费者视为“杂牌”。然而,近年来合资品牌开始加速转型,逐渐适应中国市场的新能源需求。广汽丰田铂智3X、日产N7等车型凭借
10月31日消息,今天,小米汽车向大家汇报小米汽车开店新进展。10月新增22家门店,全国125城已有424家门店。11月计划新增17家门店,预计覆盖吉安、临汾、南阳、十堰、渭南、宜宾6座新城市。据了
AI赋能区块链在DeFi、安全与数据分析领域实现突破:1 在DeFi中,AI实现智能投顾、风险管理、流动性优化与跨链互操作性;2 在安全方面,AI提升智能合约审计、节点行为检测、零知识证明效率与链上身份认证;3 在数据应用中,AI推动链上洞察、资产定价、网络监测与反洗合规,全面增强区块链系统的智能化水平。
关于在vivo手机上获取应用的几点思考 前几天帮亲戚调试新买的vivo手机,遇到个挺有意思的情况。他想安装某个特定用途的应用,但在官方应用
保卫萝卜4胡桃夹子第七十二关是一个颇具挑战性的关卡。要顺利通关,需要精心规划布局,合理运用各种道具和炮塔。开局时,场上有一些初始的道具和炮塔。我们首先要利用好这些资源,在怪物出现的





