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了吗?对此有什么看法?
免责声明
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
一加Ace 6评测:7800mAh电池配165Hz屏的旗舰体验
10月23日消息,一加正式宣布将于10月27日发布一加 Ace 6新机。一加中国区总裁李杰将其称为“史上最强Ace”,并强调这款产品
奥特曼揭秘GPT-6:正式改名GPT-6.7,实现重大技术跨越
OpenAI首席执行官山姆・奥特曼近日在社交平台X上宣布,公司计划将下一代语言模型GPT-6更名为GPT-6-7。这一突如其来的命名调整引发业界关注,但最新尚未就具体原因作出说明。据科技媒体披露,奥
谷歌AI转型财报解读:传统业务与AI融合的中国经验
谷歌母公司Alphabet近日公布了最新季度财报,数据表现全面超出市场预期,引发资本市场热烈反应。财报显示,公司当季总营收达1023 46亿美元,同比增长16%,较华尔街预期高出逾20亿美元。摊薄每
2025日本移动出行展:日系车企蓝图,揭秘未来出行新趋势
在近期举办的日本移动出行展上,各大车企纷纷亮出创新产品与技术,勾勒出未来出行的多元图景。这场展会不仅展示了传统汽车领域的突破,更将视野拓展至海洋、天空乃至太空,展现了日本车企对未来移动出行的全面构想
00后天才学生回归!Sora核心贡献者与OpenAI团队重塑超强AI
OpenAI内部一支由年轻工程师组成的特种团队,正悄然推进一项可能改变人工智能发展轨迹的重大项目。这支三人小组的核心成员Will Depue,这位年仅22岁便在AI领域声名鹊起的工程师,正带领团队向
相关攻略
热门教程
更多- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                 
												
                                                
 
								







 
								 
								 
								 
								 
								 
								 
								 
								 
								