用uv管理python环境/项目(各种应用场景)

一、安装uv

有python的情况

pip install uv

Windows

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

linux或macOS

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

二、换镜像源

uv不会读取pip的镜像源配置,所以要自己配置一下

2.1 针对项目换源

在项目文件的pyproject.toml中,添加如下内容:

[tool.uv]
index-url = "https://pypi.tuna.tsinghua.edu.cn/simple/"

2.2 全局换源

Windows下换源

临时换源

powershell下执行

$env:UV_INDEX_URL = "https://pypi.tuna.tsinghua.edu.cn/simple"
永久换源
  • 编辑[系统环境变量],添加:
    • 变量名:UV_INDEX_URL
    • 变量值:https://pypi.tuna.tsinghua.edu.cn/simple
验证变量是否生效:
echo $env:UV_INDEX_URL

linux下换源

临时换源
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
永久换源
echo 'export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple' >> ~/.bashrc
source ~/.bashrc  # 立即生效
验证环境是否生效
echo $UV_INDEX_URL # 输出应为:https://pypi.tuna.tsinghua.edu.cn/simple

用法1:把uv当作pip加速的工具

把原来的pip命令前面加个uv,变成uv pip,提高包的安装速度

查看当前python包

uv pip list #查看当前python包
uv pip tree #查看当前python包,可显示包依赖关系

安装python包

uv pip install pandas #安装pandas包

卸载python包

uv pip uninstall pandas #卸载pandas包(不会卸载pandas依赖的包,这点与pip一样)

导出python包列表

uv pip freeze > requirements.txt

导入python包列表

uv pip install -r requirements.txt

用法2:创建新uv项目,运行

mkdir uvtest # 创建项目文件夹uvtest
cd uvtest # 进入项目文件夹
# uv init # 初始化项目,此时会在该文件夹中生成很多文件
uv init -p 3.12 #初始化项目时,指定python版本为3.12

打开.python-version,修改文件内容,切换项目python版本

执行python程序,测试环境

uv run main.py# 执行python程序
# 第一次执行uv run命令时,会将虚拟环境创建在.venv文件夹中
# 在vs code中选择该解释器路径:.\.venv\Scripts\python.exe

之后在项目文件夹中,通过终端执行uv命令管理python依赖

用法3:用uv的方式安装/卸载python包

查看当前python包

uv tree #查看当前python包,可显示包依赖关系

安装python包

uv add pandas #安装pandas包
# 执行该命令时,会自动修改pyproject.toml和uv.lock文件
uv add ruff --dev # ruff仅用于开发环境,不会被打包
# 注意:删除时也要加--dev: uv remove ruff --dev
uv add pytest --dev # 包仅用于开发环境,不会被打包
uv add mock --dev # 包仅用于开发环境,不会被打包

若使用uv pip install,则不会自动修改pyproject.toml和uv.lock文件,需要手动调用uv add,修改pyproject.tomluv.lock文件
例:

uv pip install pandas # 安装了pandas包,但是没有修改pyproject.toml和uv.lock文件
uv add pandas # 手动修改pyproject.toml和uv.lock文件

卸载python包

uv remove pandas #卸载pandas包(会卸载pandas依赖的包,与pip不同)
# 执行该命令时,会自动修改pyproject.toml和uv.lock文件

升级python包

--upgrade-package表示将尝试将指定的包更新到最新的兼容版本,同时保持锁文件的其余部分不变。

uv lock --upgrade-package requests

导出python包列表

pyproject.tomluv.lock文件中就是该项目的python依赖信息,已经被自动修改了,一般不需要手动导出

导入python包列表

uv sync # 根据pyproject.toml和uv.lock文件内容自动安装依赖包 

用法4:从已有环境创建新uv项目

现在将【老项目】(没用uv)中的python环境迁移到【新项目】(用了uv)中

进入【老项目】文件夹终端,执行如下命令,导出依赖列表

pip freeze > requirements.txt  # 调整绝对路径的模块

requirements.txt文件移动至【新项目】文件夹中
打开【新项目】的.python-version文件,修改文件内容,输入与老项目相同的python版本
进入【新项目】文件夹终端,执行如下命令,导入依赖(顺便修改pyproject.toml和uv.lock文件)

uv add -r requirements.txt

此时可删除requirements.txt文件(因为环境已经导入进pyproject.toml和uv.lock了)

用法5:已有uv项目代码,创建该项目的环境

打开终端,进入项目文件夹,执行

uv sync  # 根据pyproject.toml和uv.lock文件内容自动安装依赖包

用法6:安装python工具,如ruff

ruff是个工具,本质上和项目代码无关,我们不希望在python环境中安装他。可以把ruff当作工具安装到系统环境

uv tool uninstall ruff #安装ruff工具,这个ruff是脱离工程环境独立运行的
uv tool list # 当前已安装工具的列表

用法7:将python项目打包成whl文件,上传到python软件仓库

TODO:目前没需求,用到了再更新

uv build

参考

https://hellowac.github.io/uv-zh-cn/reference/

### 使用 UVPython 中的应用场景与方法 UV 是由 Astral 公司推出的一款高性能 Python管理工具,旨在替代传统工具如 pip 和 pip-tools。它不仅提供了更快的依赖解析速度,还集成了虚拟环境管理Python 版本控制功能[^4]。 #### 安装 UV 工具 要开始使用 UV,在 Windows 上可以通过以下命令安装该工具: ```bash uv python install ``` 此命令会自动检测并下载适合当前系统的 Python 解释器版本,类似于 pyenv 的功能,但效率更高[^2]。 #### 创建和激活虚拟环境 UV 支持创建独立的虚拟环境来隔离项目依赖项。以下是具体操作方式: 1. **初始化一个新的项目** 运行以下命令以设置项目的 `pyproject.toml` 文件,并定义所需的依赖关系。 ```bash uv init ``` 2. **添加依赖项到项目中** 可以通过简单的命令将库添加至项目中,例如: ```bash uv add requests ``` 此外,还可以指定特定版本号或范围作为参数传递给上述命令。 3. **同步依赖项** 当修改了配置文件后,执行下面这条语句即可更新本地环境中已存在的软件包列表使之匹配最新设定值。 ```bash uv sync ``` 4. **运行脚本或者交互式解释器** 如果已经处于某个被激活的状态下的虚拟空间里,则可以直接调用常规形式的指令;如果不是的话则需加上前缀路径名以便正确加载关联资源。 ```bash ./venv/bin/python myscript.py ``` #### 数据处理示例 假设有一个 JSON 格式的外部数据源需要导入程序内部结构化表示出来供后续逻辑运算之用时可采用如下代码片段完成相应任务[^5]: ```python from pathlib import Path import json HERE = Path(__file__) DATA_PATH = HERE.parent / "data.json" sculpture_data = json.loads(DATA_PATH.read_text()) print(sculpture_data) ``` 以上展示了如何利用 UV 来构建高效的开发工作流以及实际编码过程中可能涉及的一些基本技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值