Python多版本环境管理UV

Python多版本环境管理UV

1-参考网址

  • Python虚拟环境UV管理工具-官网
  • Python虚拟环境UV管理工具-快速开始
  • pyproject.toml使用指导

2-核心知识点

  • 1)python项目维护requirements.txt
  • 2)python机器学习环境Anaconda
  • 3)python轻量级环境管理uv
  • 4)uvx快速上手使用

3-上手实操

1-安装UV虚拟环境管理工具

  • UV官网安装教程
# Windows安装脚本
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"# MacOS和Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

2-Python多版本管理

uv 安装 Python 并允许在版本之间快速切换。

1)安装指定 Python 版本:

# 下载方式1-创建一个环境
uv venv --python 3.12.0# 下载方式2-命令行执行
uv run --python pypy@3.8 -- python# 使用
uv python pin 3.11

2)安装多个 Python 版本:

uv python install 3.10 3.11 3.12

3-依赖版本管理

开展项目

uv 支持管理 Python 项目,在文件中定义其依赖关系pyproject.toml

创建新项目

您可以使用以下命令创建一个新的 Python 项目uv init

uv init hello-world
cd hello-world

或者,您可以在工作目录中初始化一个项目:

mkdir hello-world
cd hello-world
uv init

uv 将创建以下文件:

.
├── .python-version
├── README.md
├── main.py
└── pyproject.toml

main.py文件包含一个简单的“Hello world”程序。尝试一下uv run

uv run main.py
项目结构

项目由几个重要的部分组成,它们协同工作并允许 uv 管理您的项目。除了 创建的文件之外, 当您第一次运行项目命令(即、 或
)时, uv inituv 还会在项目的根目录中创建虚拟环境和文件。uv.lock``uv run``uv sync``uv lock

完整列表如下:

.
├── .venv
│   ├── bin
│   ├── lib
│   └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock

Managing dependencies

You can add dependencies to your pyproject.toml with the uv add command. This will also update the lockfile and
project environment:

uv add requests

You can also specify version constraints or alternative sources:

# Specify a version constraint
uv add 'requests==2.31.0'# Add a git dependency
uv add git+https://github.com/psf/requestsxxxxxxxxxx # Specify a version constraintuv add 'requests==2.31.0'# Add a git dependencyuv add git+https://github.com/psf/requestsuv add requests

To remove a package, you can use uv remove:

uv remove requests

To upgrade a package, run uv lock with the --upgrade-package flag:

uv lock --upgrade-package requests

The --upgrade-package flag will attempt to update the specified package to the latest compatible version, while
keeping the rest of the lockfile intact.

See the documentation on managing dependencies for more
details.

Running commands

uv run can be used to run arbitrary scripts or commands in your project environment.

Prior to every uv run invocation, uv will verify that the lockfile is up-to-date with the pyproject.toml, and that
the environment is up-to-date with the lockfile, keeping your project in-sync without the need for manual
intervention. uv run guarantees that your command is run in a consistent, locked environment.

For example, to use flask:

uv add flask
uv run -- flask run -p 3000

Or, to run a script:

example.py

# Require a project dependency
import flaskprint("hello world")

Alternatively, you can use uv sync to manually update the environment then activate it before executing a command:

uv sync
source .venv/bin/activate
flask run -p 3000
python example.py

Note

虚拟环境必须处于活动状态才能在项目中运行脚本和命令uv run。虚拟环境的激活因 shell 和平台而异。

有关更多详细信息,请参阅有关在项目中运行命令和脚本的文档。

构建发行版

uv build可用于为您的项目构建源分布和二进制分布(wheel)。

默认情况下,uv build将在当前目录中构建项目,并将构建的工件放在dist/子目录中:

uv build
ls dist/

4-疑惑问答

1. uvpyproject.toml 的关系

理解 uv

uv 通常指的是 ultra-venv,它是一个用于创建和管理 Python 虚拟环境的工具。虚拟环境可以为不同的项目隔离 Python
解释器和依赖包,避免不同项目之间的依赖冲突。

理解 pyproject.toml

pyproject.toml 是 Python 项目的配置文件,在 Python PEP 518
中被引入。它主要用于指定项目的元数据(如项目名称、版本、作者等)以及构建后端(如 setuptoolspoetry
等)。通过 pyproject.toml,可以清晰地定义项目的依赖项、构建脚本等信息。

二者关系
  • 无直接关系uv 主要专注于虚拟环境的创建和管理,而 pyproject.toml 是关于项目配置和依赖管理的。它们本身没有直接的功能联系。
  • 可间接协同:在一个项目中,你可以使用 uv 创建虚拟环境,然后在这个虚拟环境中根据 pyproject.toml
    里定义的依赖信息来安装项目所需的包。例如,如果你使用 poetry 作为构建后端,poetry 会读取 pyproject.toml
    文件中的依赖列表,然后在 uv 创建的虚拟环境中安装这些依赖。

以下是一个简单示例:

# 使用 uv 创建虚拟环境
uv create my_project_env# 激活虚拟环境
source my_project_env/bin/activate# 在项目根目录下有 pyproject.toml 文件,使用 poetry 安装依赖
poetry install

2. uv的版本管理和 Anaconda 的区别

uv的版本管理
  • 专注虚拟环境uv 主要用于创建和管理 Python 虚拟环境。它可以方便地创建、激活、停用和删除虚拟环境,但对于 Python
    解释器的版本管理功能相对较弱。通常需要手动下载和安装不同版本的 Python 解释器,然后在创建虚拟环境时指定使用哪个版本的解释器。
  • 轻量级uv 是一个轻量级的工具,不会像 Anaconda 那样安装大量的预打包库和工具,因此占用的磁盘空间较小,安装和使用也相对简单。
Anaconda 的版本管理
  • 全面的版本管理:Anaconda 是一个集成的 Python 发行版,它不仅可以管理虚拟环境,还可以方便地管理 Python
    解释器的版本。通过 conda 命令,可以轻松地安装、切换不同版本的 Python 解释器,以及安装各种科学计算和数据处理相关的库。
  • 丰富的包管理:Anaconda 自带了大量的预打包库,如 NumPy、Pandas、Matplotlib 等。使用 conda
    命令可以方便地安装、更新和卸载这些库,并且可以解决库之间的依赖关系。
  • 跨平台支持:Anaconda 支持多种操作系统(如 Windows、Linux、macOS),并且在不同平台上的使用方式基本一致。
区别总结
比较项uvAnaconda
功能重点主要专注于虚拟环境管理提供全面的 Python 解释器和包版本管理
磁盘占用轻量级,占用磁盘空间小安装包较大,占用较多磁盘空间
适用场景适合简单的 Python 项目,对依赖管理要求不高适合数据科学、机器学习等需要大量第三方库的项目
包管理依赖其他工具(如 pip)进行包管理自带 conda 包管理系统,可管理大量预打包库

2-uvx 和 uv是什么关系

uvx (an alias for uv tool run)

1. 基本关系概述

uvxuv 工具运行的别名(an alias for uv tool run)。这意味着 uvx 本质上和使用 uv run
命令的功能是等价的,它是为了方便用户操作而提供的一种快捷方式。

2. 使用方式举例

假设我们有一个 uv 环境,并且想要在这个环境中运行某个 Python 脚本。

使用 uv run

通常情况下,如果使用 uv 自带的 run 命令,我们可能会这样操作:

# 假设我们要运行一个名为 script.py 的 Python 脚本
uv run python script.py

这里的 uv run 命令会在 uv 管理的虚拟环境上下文中执行后面跟着的命令(在这个例子中是 python script.py)。

使用 uvx

而使用 uvx 时,操作会更简洁:

uvx python script.py

这行命令和上面使用 uv run 的命令效果是一样的,都是在 uv 虚拟环境中运行 script.py 脚本。

3. 优势

使用 uvx 作为别名的优势在于减少了输入量,提高了操作效率。特别是对于那些需要频繁在 uv
环境中运行命令的用户来说,每次输入 uv run 可能会比较繁琐,而使用 uvx 可以让命令输入更加简洁、快速。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33485.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何快速检测光模块内部光纤裂纹?

关键词:光纤裂纹、白光干涉、光纤微裂纹检测仪 概述: 随着大数据时代对数据量需求的爆炸式增长,光通信系统也在不断的更新升级。光通信产业链上的光收发模块作为核心组件之一,其性能优劣直接影响系统的通信质量。由于光模块速率…

PyQt基础——简单的窗口化界面搭建以及槽函数跳转

一、代码实现 import sysfrom PyQt6.QtGui import QPixmap from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QMessageBox from PyQt6.uic import loadUi from PyQt6.QtCore import Qtclass LoginWindow(QWidget):def __init__(self):sup…

深入理解 ALSA 声卡驱动:从理论到实践,解决嵌入式 Linux 声卡无声问题

📌 1. 引言 在嵌入式 Linux 设备上,ALSA(Advanced Linux Sound Architecture)是音频驱动的核心框架。 然而,在实际部署过程中,我们可能会遇到 声卡无声、通道不匹配、I2S 传输异常等问题。 本文将深入解析…

Windows远程桌面黑屏怎么办?

在使用Windows远程桌面连接另一台电脑时,用户经常会遇到Windows远程桌面黑屏的问题。那么,该如何有效地解决Windows远程桌面黑屏的问题呢?遇到远程桌面连接黑屏的问题时,可以通过在本地组策略编辑器中禁用WDDM图形显示驱动来解决。…

【VSCODE 插件 可视化】:SVG 编辑插件 SVG Editor

插件下载 svgeditor 创建文件 Windows/Linux 快捷键 Ctrl Shift P 打开VSCODE 命令面板查找 New File With Svg Editor 编辑文件 保存文件 打开文件以继续编辑 CG 选中多个:shift单击没找到横向分布功能无法用键盘微调位置

python3GUI--模仿安卓桌面 By:PyQt5(附下载地址)

文章目录 一.前言二.展示1.主界面2.设置页面3.更换了壁纸且切换桌面页面 三.项目分享1.项目代码结构2.组件代码分享 四.总结 文件大小25.5M,欢迎下载体验!点击下载 一.前言 今天给大家推荐我用…

stm32 L432KC(mbed)入门第一课

目录 一. 前言 二. 专栏意义 三. MS入门第一课 一. 前言 新的一年MS课程又开始了,同时也到了该专栏的第三个年头。在前两年中,该专栏帮助了很多第一次接触单片机的同学。其中,有的同学订阅专栏是为了更好的完成并且通过MS这门课程&#xf…

【Unity网络同步框架 - Nakama研究(二)】

Unity网络同步框架 - Nakama研究(二) 虽说官方文档和网站以及论坛建立的不错,而且还有中文翻译且质量也不错,但是总会遇到一些词不达意,说了但是依旧没懂的部分,甚至问AI也问不出什么东西,所以需要有一些比较明显的博客…

【Linux系统编程】信号

目录 1、信号1.1、什么是信号1.2、进程对信号的处理1.3、信号的生命周期1.4、信号处理流程1.5、信号的发送 2、kill()、raise()函数 发送信号3、alarm函数 闹钟信号4、pause函数 挂起信号、暂停5、singal 函数 捕获信号5.1、为什么返回值是上一次的处理方式5.2、练习 6、sigact…

git使用命令总结

文章目录 Git 复制创建提交步骤Git 全局设置:创建 git 仓库:已有仓库? 遇到问题解决办法:问题一先git pull一下,具体流程为以下几步: 详细步骤 Git 复制 git clone -b RobotModelSetting/develop https://gitlab.123/PROJECT/123.git创建提…

解锁 AI 核心:神经网络与机器学习知名算法全解析

引言​ 在人工智能蓬勃发展的当下,神经网络与机器学习算法作为核心驱动力,广泛应用于各个领域。了解这些知名算法,能让我们更好地把握 AI 技术的精髓。接下来,一同深入探寻。​ 机器学习知名算法​ 线性回归(Linear…

基于SpringBoot + Vue 的房屋租赁系统

基于springboot的房屋租赁管理系统-带万字文档 SpringBootVue房屋租赁管理系统 送文档 本项目有前台和后台两部分、多角色模块、不同角色权限不一样 共分三种角色:用户、管理员、房东 管理员:个人中心、房屋类型管理、房屋信息管理、预约看房管理、合…

30天学习Java第六天——Object类

Object类 java.lang.Object时所有类的超类。Java中所有类都实现了这个类中的方法。 toString方法 将Java对象转换成字符串的表示形式。 public String toString() {return getClass().getName() "" Integer.toHexString(hashCode()); }默认实现是:完…

DeepSeek在金融行业应用

引言 随着人工智能技术的快速发展,DeepSeek作为一款国产大模型,凭借其强大的语义理解、逻辑推理和多模态处理能力,在金融行业迅速崭露头角。其低成本、高效率和开源特性使其成为金融机构智能化转型的重要工具。本文旨在分析DeepSeek在金融行业…

【Unity】 HTFramework框架(六十二)Agent编辑器通用智能体(AI Agent)

更新日期:2025年3月14日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 编辑器通用智能体AIAgent类Friday(星期五)启用智能体设置智能体类型开放智能体权限智能体交互资源优化批处理运行代码联网搜索休闲…

以太坊AI代理与PoS升级点燃3月市场热情,2025年能否再创新高?

币热网深度报道:以太坊AI代理与PoS升级引爆3月热潮,2025年能否再攀历史新高? 原文来源:币热网 - 区块链信息资讯平台 以太坊升级,市场热情高涨 近期,以太坊市场犹如被一股神秘力量点燃,掀起了…

【赵渝强老师】达梦数据库的目录结构

达梦数据库安装成功后,通过使用Linux的tree命令可以非常方便地查看DM 8的目录结构。 tree -L 1 -d /home/dmdba/dmdbms#输出的信息如下: /home/dmdba/dmdbms ├── bin 存放DM数据库的可执行文件,例如disql命令等。 ├── bin2 ├── d…

2025探索短剧行业新可能报告40+份汇总解读|附PDF下载

原文链接:https://tecdat.cn/?p41043 近年来,短剧以其紧凑的剧情、碎片化的观看体验,迅速吸引了大量用户。百度作为互联网巨头,在短剧领域积极布局。从早期建立行业专属模型冷启动,到如今构建完整的商业生态&#xf…

基于java(springboot+mybatis)汽车信息管理系统设计和实现以及文档

基于java(springbootmybatis)汽车信息管理系统设计和实现以及文档 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各…

线程同步:多线程编程的核心机制

一、线程同步的意义 线程同步的主要目的是避免数据竞争、保证数据一致性、控制线程执行顺序,并提高程序的性能和稳定性。具体意义包括: ​避免数据竞争:防止多个线程同时修改共享资源,导致不可预测的行为。​保证数据一致性&…