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

uv教程 虚拟环境

什么是uv

可以创建虚拟环境 安装依赖

安装uv

参见官方文档

安装 | uv-zh-cn

自定义安装目录,win+r 输入powershell,输入如下命令

$env:UV_INSTALL_DIR = "C:\Custom\Path";powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

将自定义的目录加入到path

可以执行uv,说明安装成功

如果被墙,那就从 https://github.com/astral-sh/uv/releases 下载压缩包

uv-i686-pc-windows-msvc.zipx86 Windows32位操作系统
uv-x86_64-pc-windows-msvc.zipx64 Windows64位操作系统

解压到存放目录,比如D:\uv,然后将目录D:\uv加入到系统环境变量path

系统环境变量操作见环境变量 - 白月黑羽

更新

uv self update 的行为

1. 检查当前安装位置

uv self update 会先确认自己是怎么被安装的。如果是通过 安装脚本 install.ps1 安装的,它会记住 $env:UV_INSTALL_DIR 的路径(因为脚本就是往那个路径里放了 uv.exe、uvx.exe、uvw.exe)。

2. 下载最新版本

它会去 astral-sh/uv 的 GitHub Releases 检查最新 release,并下载对应平台的压缩包(Windows 下是 .zip)。

3. 替换现有可执行文件

下载完成后,它会覆盖你安装目录里的旧文件:

C:\Custom\Path\uv.exe C:\Custom\Path\uvx.exe C:\Custom\Path\uvw.exe

如果你用 $env:UV_INSTALL_DIR 自定义了路径,那么 uv self update 会在那个目录里直接更新二进制文件,不会跑去默认目录

已有项目

uv的项目,后续新增库,等都用uv的命令操作。

完全uv

uv-zh-cn

Python包管理不再头疼:uv工具快速上手 - wang_yb - 博客园

UV使用教程 - 又一岁荣枯 - 博客园

假设 https://github.com/GiovanniGiacometti/python-repo-template/tree/main 这个是模板

Github配置ssh key的步骤(大白话+包含原理解释)_github生成ssh key-CSDN博客

1、pycharm中,解释器选成无解释器

2、进入项目根目录,执行 uv sync(命令行或者pycharm的终端都可以), 此时会在项目的根目录建一个.env文件夹,把找到的python解释器放进去。uv sync = 统一入口,保证项目有对的python+venv+依赖,一键搞定。

uv sync会检查本地是否存在项目所需的python版本,若没有,自动去官方下载一个,保证环境可复现。

  • 解析 Python 版本

    • .python-versionpyproject.toml 里写的 Python 要求(比如 >=3.10,<3.13)。

    • 如果本地有符合的解释器 → 用本地的。

    • 如果本地没有 → 去下载对应的独立 Python(放到 uv python dir)。

  • 创建虚拟环境

    • 在当前项目下生成 .venv/(除非你用 --no-venv)。

    • 把选中的 Python 解释器复制/链接进去。

  • 安装依赖

    • 读取 pyproject.tomlrequirements.txt 里的依赖。

    • 解析依赖 → 生成锁文件 uv.lock

    • 把依赖安装到 .venv/

uv 下载的python不是下载到了系统里,而是放在了它自己缓存/管理的目录中,避免和本地已有的python冲突。可以运行uv python list查看这里列出来的也可能是手动下载的,不是通过uv下载的,可以运行uv python dir查看uv下载的python。

自定义python存放路径
$env:UV_PYTHON_INSTALL_DIR = "D:\uv\python" uv sync

缓存

永久生效就设置到环境变量里,或者使用每个命令的时候加-- cache-dir。具体见uv文档的命令的章节

如果使用uv sync被拦截,则需要先下载对应的python版本。uv会根据i项目里的python版本,自动查找合适的python版本,去哪找的会显示

2.1 下载对应的python版本

        首先输入 winget search python (Windows 包管理器 (winget) 搜索和 Python 相关的软件包)查找可以得到的python版本。

将ID列对应的python版本复制下,运行 winget install ID列python版本(Windows 包管理器 (winget) 来安装 Python x.x),装好后,它会把 python.exepip.exe 放到系统路径(通常在 C:\Users\<你>\AppData\Local\Microsoft\WindowsApps),不支持选路径。

如果不想随便放,那就自己下载对应的版本放到某个位置,然后运行

uv sync --python "D:\Python313\python.exe"
告诉 uv:不要去自己找/下载 Python 版本,直接用我指定的这一只解释器来建环境。
uv 读取项目配置(.python-version 或 pyproject.toml → requires-python)你用 --python 指定了解释器:D:\Python313\python.exeuv 会检查:这只解释器是否存在;它的版本号是否满足项目要求。如果满足,就用它来:创建 .venv/ 虚拟环境(.venv\Scripts\python.exe 会指向(复制或链接)你指定的 D:\Python313\python.exe。)这样以后项目始终用这只解释器,而不会乱掉安装依赖、生成/更新 uv.lock

3、pycharm,python解释器,选择虚拟环境中的python.exe

--------------------------------------------------------------

conda+uv

1、使用conda创建虚拟环境

2、进入i项目的根目录,执行uv sync -- python "conda虚拟环境里python的目录"

相当于不人工下载python,让conda下载python,conda管理自己下载的python。

卸载uv下载的python版本

新建项目

--python 参数

1、在初始化时就指定解释器路径或版本号:

本地要有 --python指定的解释器

uv init myproject --python "D:\Python313\python.exe" 结果:
  • .python-version 会写成 3.13(对应你给的解释器)。

  • pyproject.toml[project] requires-python 也会是 >=3.13

  • 以后 uv sync 就会用这只解释器。

2、先uv init, 再改 .python-version

3、uv sync --python


文章转载自:

http://mIwD40HD.ndwdk.cn
http://ANB4LDiv.ndwdk.cn
http://S4Zwzt3D.ndwdk.cn
http://YP9LiiWj.ndwdk.cn
http://qg7KjbiR.ndwdk.cn
http://HHo3500t.ndwdk.cn
http://a2vZtco6.ndwdk.cn
http://LFCWZBFz.ndwdk.cn
http://X1aRVZZp.ndwdk.cn
http://btmaqNjZ.ndwdk.cn
http://5ONzFHHw.ndwdk.cn
http://KjSgHW5K.ndwdk.cn
http://BQRvBN7T.ndwdk.cn
http://FRVQnKzj.ndwdk.cn
http://gWphlEZ7.ndwdk.cn
http://ZkVYhj30.ndwdk.cn
http://v6x7MDSA.ndwdk.cn
http://MFpCVqP7.ndwdk.cn
http://S9fpw2OV.ndwdk.cn
http://tswkMniE.ndwdk.cn
http://G4VQDR5U.ndwdk.cn
http://OOK4npgp.ndwdk.cn
http://6FC94Uzb.ndwdk.cn
http://xTIsNdxa.ndwdk.cn
http://40EEDDS3.ndwdk.cn
http://fYJDtrqd.ndwdk.cn
http://eu8Bc0gt.ndwdk.cn
http://25G3z4PN.ndwdk.cn
http://jTqKovbp.ndwdk.cn
http://G0WkGP7k.ndwdk.cn
http://www.dtcms.com/a/370217.html

相关文章:

  • 残差网络 迁移学习对食物分类案例的改进
  • VBA之Excel应用第四章第七节:单元格区域的整行或整列扩展
  • 【Flask】测试平台开发,数据看板开发-第二十一篇
  • [光学原理与应用-433]:晶体光学 - 晶体光学是研究光在单晶体中传播规律及其伴随现象的分支学科,聚焦于各向异性光学媒质的光学特性
  • C++面试10——构造函数、拷贝构造函数和赋值运算符
  • PID控制技术深度剖析:从基础原理到高级应用(六)
  • 登录优化(双JWT+Redis)
  • 【基础-单选】在下面哪个文件中可以设置页面的路径配置信息?
  • C++ 内存模型:用生活中的例子理解并发编程
  • 【3D图像算法技术】如何在Blender中对复杂物体进行有效减面?
  • 电脑音频录制 | 系统麦克混录 / 系统声卡直录 | 方法汇总 / 常见问题
  • 论文阅读:VGGT Visual Geometry Grounded Transformer
  • 用 PHP 玩向量数据库:一个从小说网站开始的小尝试
  • [光学原理与应用-432]:非线性光学 - 既然光也是电磁波,为什么不能直接通过电生成特定频率的光波?
  • python调用mysql
  • redis-----事务
  • 集成学习(随机森林算法、Adaboost算法)
  • 形式化方法与安全模型
  • Python两种顺序生成组合
  • 【Python自动化】 21 Pandas Excel 操作完整指南
  • Unity与硬件交互终极指南:从Arduino到自定义USB设备
  • Codeforces Round 1046 (Div. 2) vp补题
  • 【LeetCode热题100道笔记】二叉树的右视图
  • Day22_【机器学习—集成学习(1)—基本思想、分类】
  • 自动化运维,ansible综合测试练习题
  • 【面试题】领域模型持续预训练数据选取方法
  • OpenHarmony之USB Manager 架构深度解析
  • 新服务器初始化:Git全局配置与SSH密钥生成
  • 主流分布式数据库集群选型指南
  • 【Proteus仿真】定时器控制系列仿真——秒表计数/数码管显示时间