当前位置: 首页 > news >正文

uv,下一代Python包管理工具

什么是uv

uv(Universal Virtual)是由Astral团队(知名Python工具Ruff的开发者)推出的下一代Python包管理工具,使用Rust编写。它集成了包管理、虚拟环境、依赖解析、Python版本控制等功能,它聚焦于三个关键点:性能、安全性、以及现代化开发流程的兼容性。

uv的特点

uv是一款新型的 Python 包管理工具,具备以下特点:

  • 极速性能,无缓存时比pip快8-10倍**,**热缓存时快80-115倍;
  • 功能集成,多工具集成于uv工具中,如:uv pip代替pip,uv python代替pyenv,uv tool代替pipx;
  • 并行化处理:依赖解析、下载、安装全程并行,充分利用硬件资源;
  • 静态分发,没有Python环境时也可以运行,避免版本冲突;
  • 跨平台,支持Windows、Linxu、mac系统,使用方式一致。

安装uv

可以通过以下指令安装uv工具

  • 使用独立安装脚本,通过curl下载并执行安装脚本(适用于macOS/Linux):

    curl -LsSf https://astral.sh/uv/install.sh | sh
    

    uv已被收录至Homebrew软件库,mac系统也可以使用以下命令安装:

    brew install uv
    
  • Windows系统,可以使用PowerShell命令进行安装安装(需管理员权限):

    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    
  • 通过pip安装,使用pip进行安装(需要安装Python环境):

    pip install uv
    
  • 安装完成后验证版本:uv --version

    在这里插入图片描述

uv的使用

无缝替代pip

# 安装依赖
uv pip install requests pandas# 检查依赖
uv pip check# 显示包依赖树
uv pip show --tree requests# 清理缓存(类似 pip cache purge)
uv cache purge

项目管理

1.创建文件夹python_app,对项目进行初始化,生成虚拟环境、pyproject.toml和.gitignore:

uv init

在这里插入图片描述

2.添加依赖模块,例如pygame,添加后会自动更新pyproject.toml和锁定文件(uv.lock):

uv add "pygame"

在这里插入图片描述

在这里插入图片描述

3.运行Python程序,

uv run python main.py

4.打包项目

uv build

通过uv.lock文件,在更换运行设备时可以完全复现项目的环境,不需要再额外安装项目所依赖的模块,保证项目可直接运行。

程序的安全防护

uv凭借Rust驱动的高性能特性,优化了Python开发体验,它能极大地提升我们的开发和管理效率。然而,在追求开发效率的同时,我们绝不能忽视另一个至关重要的环节——代码安全。

众所周知,Python作为一种解释型语言,其源代码通常以明文的.py文件形式存在,非常容易被反编译和窃取。当你辛辛苦苦开发的算法或核心逻辑被打包分发时,非常容易被他人获取使用。

因此,在利用uv这样的利器高效完成开发后,强烈建议对关键代码进行加固保护。在这方面,Virbox Protector是一款非常专业的工具,它可以在字节码层次对Python代码进行保护,保障代码的安全。

http://www.dtcms.com/a/340632.html

相关文章:

  • 机器学习-数据预处理全指南:从缺失值到特征编码
  • Tdesign-React 组件 Card 实现头部固定,内容区单独可滚动
  • vue:vue中的ref和reactive
  • 0820 SQlite与c语言的结合
  • 宿主机与容器通过 rmw_cyclonedds_cpp中间件进行ros2结点之间的通讯的相关注意事项
  • 开源的实时 Web 日志分析器GoAccess安装使用指南
  • 10X Visium HD空转流程1·Space Ranger v4.0.1的使用
  • [机器学习]11-基于CART决策树算法的西瓜数据集分类
  • bun + vite7 的结合,孕育的 Robot Admin 【靓仔出道】(十五)
  • LangGraph从入门到精通(二)——条件边与循环流程实现工具调用
  • 短剧小程序系统开发:构建影视娱乐新生态的基石
  • c#,装箱拆箱知识点示例理解
  • (Arxiv-2025)SkyReels-A2:在视频扩散变换器中组合任意内容
  • 分享智能解译算法获取及调用之建筑物提取
  • Ubuntu 虚拟显示器自动控制服务设置(有无显示器的切换)
  • pip 安装常见错误及实例化解决办法大全
  • 计算机网络技术学习-day4《路由器配置》
  • ubuntu下安装vivado2015.2时报错解决方法
  • SPI 机制深度剖析:Java、Spring、Dubbo 的服务发现哲学与实战指南
  • 根据Wireshark捕获数据包时间和长度绘制路由器发送给电脑数据的信号波形
  • 【FreeRTOS】临界资源管理
  • 树上背包(P2014 [CTSC1997] 选课)
  • 经营帮租赁经营板块:解锁资产运营新生态,赋能企业增长新引擎
  • 【最后203篇系列】034 使用SQLite构建简单的任务管理
  • Qt5.9.9 + Windows API 开发系统监控工具 - 教学级项目实战
  • Obsidian 1.9.10升级
  • 19.web api 10
  • SQL-leetcode— 2356. 每位教师所教授的科目种类的数量
  • 有关SWD 仿真和PA.15, PB3, PB4的冲突问题
  • 深入Linux内核:架构设计与核心功能解析