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

python项目和依赖管理工具uv简介

uv是一个python管理工具的集大成者,一个工具将项目管理、虚拟环境管理、开发工具使用和管理等等集于一身。

这里只是入门简介,更详细的使用方法请参考官方文档。

文章目录

  • 项目管理
    • 创建项目
    • 单文件项目
    • 协同
  • 环境管理
    • 添加依赖
    • 运行
  • 命令行工具
  • 命令行简介
  • 配置文件
    • 镜像源

项目管理

创建项目

开发的第一步就是创建项目。项目一般由:源代码、编译和构建工具、环境配置、IDE配置、Git配置、流水线配置等等组成。

# 文件夹名称会默认作为项目名称
uv init <dictionary>

在这里插入图片描述
python-version 用来指定项目用到的python版本;pyproject.toml用来描述整个项目,包括依赖、项目名称等。这两个文件是项目运行和虚拟环境管理的关键配置文件。

单文件项目

除了上面这种情况,uv允许将所有项目信息写入py文件中,实现一个文件就是一个项目。

uv init --script <py-file>
# 例如
uv init --script main.py

在这里插入图片描述
此时无需创建复杂项目结构也能实现复杂功能。非常适合脚本场景。

协同

当从仓库下载代码或者修改项目配置(如修改.python-version版本号),需要运行uv sync这个命令会自动按照配置文件配置本地环境(python版本、依赖包等)。如果本地没有匹配的python版本,则会自动下载对应版本。

环境管理

添加依赖

使用uv管理依赖时不需要提前激活虚拟环境(如:conda),也不需要不定期的保存requirements.txt文件。仅仅需要一行命令uv add <package-name>就可以了(如:uv add requests)。这个命令会一次性创建虚拟环境、安装依赖、更新项目文件。

在这里插入图片描述

运行

使用uv run <py-file>可以直接运行python脚本。他会自动启动对应虚拟环境,使用环境中的依赖。

命令行工具

开发时会用到一些python编写的工具,如:pytest。使用uv时可以直接使用uv tool install pytest进行安装。然后就可以直接在命令行使用pytest

如果不想安装工具,直接使用,那么可以使用uvx命令。uvx pytest可以直接运行pytest工具,并且不会安装到项目中

命令行简介

uv python 负责python相关命令,如安装指定版本python。

uv venv 用于管理和配置虚拟环境。如设置虚拟环境使用的python版本。

配置文件

镜像源

通过修改pyproject.toml指定默认镜像源

[[tool.uv.index]]
url = "https://test.pypi.org/simple"
default = true

如果要全局配置,则需要修改~/.config/uv/uv.toml或者/etc/uv/uv.toml

[[index]]
url = "https://test.pypi.org/simple"
default = true

下面代码演示了如何针对每个包单独设置镜像源

[project]
dependencies = ["torch"][tool.uv.sources]
torch = [{ index = "pytorch-cu118", marker = "sys_platform == 'darwin'"},{ index = "pytorch-cu124", marker = "sys_platform != 'darwin'"},
][[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://download.pytorch.org/whl/cu124"

相关文章:

  • 行为型:迭代器模式
  • 为什么Python慢?如何用Numba实现Python百倍加速?
  • CSS入门
  • java基础(继承)
  • C/C++---隐式显式转换
  • Disruptor—2.并发编程相关简介
  • MQTT-排它订阅
  • SQL注入基础
  • Kotlin全栈工程师转型路径
  • 矩阵方程$Ax=b$的初步理解.
  • 开发者工具箱-鸿蒙大小写转换开发笔记
  • PHP后端
  • Linux目录介绍+Redis部署(小白篇)
  • VLLM推理可以分配不同显存限制给两张卡吗?
  • AI+RWA探索 AI无限可能与区块链RWA结合才具有爆长的空间 —ATRNX.AI全智能量化决策Agent
  • 从法律视角看债务管理:湖北理元理律师事务所的实践探索
  • Android 16系统源码_自由窗口(一)触发自由窗口模式
  • ​​Java UDP套接字编程:高效实时通信的实战应用与核心类解析​
  • 《关于浔川社团退出DevPress社区及内容撤回的声明》
  • SQL每日一练(3)
  • 手机百度怎么解除禁止访问网站/东莞服务好的营销型网站建设
  • 网站建设包括哪些/泉州百度竞价公司
  • 专业格泰建站/搜索引擎优化的流程
  • 电子商务的网站建设过程/免费发软文的网站
  • 如何做网站打广告/全国十大跨境电商排名
  • 济南做网站价格/网站网络排名优化方法