python依赖管理工具UV的安装和使用教程

2025-09-26 00:50

本文主要是介绍python依赖管理工具UV的安装和使用教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV...

前言

注:dify的插件是依赖uv的,对于dify1.0.0以及后续的版本,需要安装uv。

一、命令安装uv

官网安装步骤(https://docs.astral.sh/uv/getting-started/installation/)。运行以下其中一个命令安装uv,安装会受网速影响。

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

wget -qO- https://astral.sh/uv/install.sh | sh

curl -LsSf https://astral.sh/uv/0.7.12/install.sh | sh  # 安装指定版本的uv

以下是独立安装拆分步骤

# 1. 先下载脚本并检查
curl -LO https://astral.sh/uv/0.7.12/install.sh
# 2. 检查脚本内容
cat install.sh      # 或使用文本编辑器查看
# 3. 确认安全后执行
sh install.sh

二、手动编译安装

2.1在archlinux安装uv的依赖工具

sudo pacman -Syu base-devel git python python-pip rust

base-devel:提供 gcc、make 等编译工具。
git:用于克隆源码。
python 和 python-pip:uv 是 Python 工具,需要 Python 环境。
rust:uv 是用 Rust 编写的,需要 Rust 工具链。

2.2从Github网站获取源码

uv项目的Github网址https://github.com/astral-sh/uv/tree/0.7.12。直接下载zip源码,然后解压复制到archlinux中/root目录下。或者运行以下命令下载:

git clophpne https://github.com/astral-sh/uv.git
cd uv

git checkout tags/0.7.12  # 该步可选,切换到指定版本(如 0.7.12)

2.3 编译安装

  • 更换 Cargo 镜像源(推荐)

编辑 Cargo 配置文件 ~/.cargo/config.toml,添加国内镜像源(如清华源或中科大源):

[source.crates-io]
replace-with = 'tuna'  # 或 'ustc'

# 清华大学镜像源
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"

# 或中科大镜像源
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index/"

生效方式

​ 保存文件后,重新运行 cargo build --release

  • 调整超时设置(临时缓解)

~/.cargo/config.toml 中增加超时时间(不推荐长期使用):

[net]
git-fetch-with-cli = true  # 使用系统 git 代替内置 git
timeout = 120              # 超时时间设为 120 秒

使用 cargo 构建

cargo build --release 

编译完成后,安装到指定目录

mkdir -p ~/.local/bin
cp target/release/uv ~/.local/bin/

cp target/release/uv /root/uv/uv-0.7.12

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
echo 'export PATHjs="$HOME/.local/bin:$PATH"' >> ~/.profile
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bash_profile

exec "$SHELL"   # 重启shell,使设置的环境变量生效

2.4 验证安装

uv --version

应输出类似:

uv 0.7.12

2.5删除target

如果已经确认uv编译完成,可以删除target文件夹来释放存储空间

进入uv所在目录,查看uv依赖项
ldd ./uv

rm -r /root/uv/uv-0.7.12/target
尽量保留.so文件
javascript

2.6使用示例

$ uv init pythonexample
Initialized project `example` at `/home/user/example`

$ cd example

$ uv add ruff
Creating virtual environment at: .venv
Resolved 2 packages in 170ms
   Built example @ file:///home/user/example
Prepared 2 packages in 627ms
Installed 2 packages in 1ms
 + example==0.1.0 (from file:///home/user/example)
 + ruff==0.5.0

$ uv run ruff check
All checks passed!

$ uv lock
Resolved 2 packages in 0.33ms

$ uv sync
Resolved 2 packages in 0.70ms
Audited 1 package in 0.02ms

三、更改国内下载镜像

更改国内镜像地址,有以下两种方法,选择其中一种就行。推荐设置全局配置文件uv.toml

1.编辑uv配置文件

1.1全局配置文件(推荐)

在/etc/uv/目录下设置uv.toml配置文件。以下设置只能对uv安装python工具包起作用,即uv下载pypi工具时,会默认从设置的网站下载。但是对于python解释器的下载,需要另外设置,具体设置就是创建软链接,见为uv设置python解释器

mkdir /etc/uv

echo '
[[index]]
url = "https://mirrors.aliyun.com/pypi/simple/"
default = true'  > /etc/uv/uv.toml

1.2具体项目的配置文件

在uv目录下设置pyproject.toml配置文件。

vim pyproject.toml

增加以下内容
[[tool.uv.index]]
url = "https://mirrors.aliyun.com/pypi/simple/"

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

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

2.直接设置环境参数

有关uv的环境参数名称见官网https://docs.astral.sh/uv/reference/environment/#uv_break_system_packages

echo 'export UV_DEFAULT_INDEX="https://mirrors.aliyun.com/pypi/simple/"' >> ~/.bashrc
echo 'export UV_DEFAULT_INDEX="https://mirrors.aliyun.com/pypi/simple/"' >> ~/.profile
echo 'export UV_DEFAULT_INDEX="https://mirrors.aliyun.com/pypi/simple/"' >> ~/.bash_profile
exec "$SHELL"   # 重启shell,使设置的环境变量生效

四、为uv设置单独的虚拟环境

1.为uv设置python解释器

将pyenv安装的python作为uv的python解释器,创建软连接。uv会优先在环境变量中查找已经安装的python解释器,查找不到,才会从默认的网站下载。其默认的网站一般是国外网站,会因为网速问题导致uv下载python解释器失败。

ln -s  "$HOME/.pyenv/versions/3.12.6/bin/python"  /usr/local/bin/python3.12

2.创建独立的虚拟环境

使用 uv 直接创建并激活虚拟环境。**使用uv venv创建虚拟环境,会自动下载对应的python解释器到以下路径/root/.local/share/uv/python/下。**并且在/opt/dify-python/lib/uv-venv/bin目录中创建软链接指向自动下载的python解释器。

uv venv /path/to/uv-venv
source /path/to/uv-venv/bin/activate

示例:
uv venv /opt/dify-python/lib/uv-venv
source /opt/dify-python/lib/uv-venv/bin/activate

3.退出虚拟环境

deactivate

4.在独立环境中使用 uv

激活虚拟环境后,所有通过 uv pip install 安装的包将仅存在于(每个项目的) ./venv/lib/pythonX.Y/site-packages安装包(仅影响当前 uv-venv 环境)

uv pip install numpy openai

或者
uv pip install -r requirements.txt  # 安装项目依赖

5.与 poetry 环境完全隔离

poetry 环境:继续在项目目录中通过 poetry install 管理主依赖。

uv 环境:仅在手动激活 uv-venv 后操作,不影响 poetry。

验证隔离性:

检查当前环境的 Python 路径

which python

应输出 uv-venv 的路径,如:/path/to/uv-venv/bin/python

对比两个环境的包列表

在 uv-venv 中:
uv pip list -v   # 列出所有已安装的包及其版本

在 poetry 环境中:
poetry run pip list

总结 

到此这篇关于python依赖管理工具UV的安装和使用的文章就介绍到这了,更多相关python依赖管理工具UV安装内容请搜索China编程php(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于python依赖管理工具UV的安装和使用教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156031

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4