尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

uv教程 虚拟环境

uv教程 虚拟环境 目录什么是uv更新使用uv管理的已有项目完全uv自定义python存放路径$env:UV_PYTHON_INSTALL_DIR D:\uv\python uv sync缓存condauv卸载uv下载的python版本新建项目uv init时指定已存在的python路径首先需要自己下载python2、先让 uv 安装所需的 Python 版本在uv init时指定下载的python​编辑3、先uv init, 再改 .python-version然后在uv sync4、uv sync时 指定python版本uv sync --python。还需要自己下pythonuv init项目已经是git仓库然后想用uv管理直接在项目所在目录执行uv init如果用uv init创建项目不管是带参数还是不带参数uv 会初始化一个 Git 仓库uv add uv pip install别人更新依赖后自己怎么更新uv pip syncrequirements.txt 管理的老 Python 项目方式一推荐保留 requirements.txt方式二转换成 pyproject.tomluv run运行普通项目文件没有 # /// script有pyproject.toml。requirements.txt 项目 ❌不会自动生效运行带 # /// script 的文件pyproject.tomluv run xx.py uv run python xx.py区别情况一脚本里有 # /// script 这种元数据情况二脚本 没有 元数据没有 # /// script总结uv run 后面不仅可以跟 .py 文件还可以跟任何命令行工具、甚至任意系统命令。python解释器就是负责读取并执行 Python 代码的程序虚拟环境里面也有一个 Python 解释器虚拟环境里的 Python 是复制的吗Python 解释器可以安装在任意目录Python 包第三方库安装到哪里是看“当前使用的 Python 解释器对应的环境”。哪个 Python 解释器执行 pip包就安装到这个 Python 解释器所属环境的 site-packages 目录。一个 Python 解释器不是孤立存在的它有一套自己的配置、库搜索路径和安装位置这一整套东西就叫一个 Python 环境sys.prefix表示当前 Python 环境的根目录第三方包不是 Python 官方自带由其他开发者开发需要额外安装的库。.whl 是第三方包的一种分发文件格式。打包好的python安装文件是一个zip压缩包一种预编译安装包格式pip安装时发生了什么为什么需要 whl因为 Python 包不一定都是纯 Python。作者提前编译用户直接安装那源码包是什么除了 .whl还有.tar.gz源码包。pip 如果找不到合适的 whl可能下载源码-》本地编译-》安装所以安装慢或者失败环境变量uv tool install claude-tap安装命令行工具隔离安装全局可用Python 生态里PyPI 上存储的包主要分两类库Library / Package供你在代码里 import 用的。工具Executable Tool / CLI App开发者用 Python 写出来的独立命令行软件命令行工具(cli)Python 生态中的三类常见 PyPI 包纯代码库纯命令行工具混合型(库 命令行工具)什么是uv可以创建虚拟环境 安装依赖参见官方文档安装 | uv-zh-cn自定义安装目录,winr 输入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的命令操作。完全uvuv-zh-cnPython包管理不再头疼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 统一入口保证项目有对的pythonvenv依赖一键搞定。uv sync会检查本地是否存在项目所需的python版本若没有自动去官方下载一个保证环境可复现。解析 Python 版本看.python-version或pyproject.toml里写的 Python 要求比如3.10,3.13。如果本地有符合的解释器 → 用本地的。如果本地没有 → 去下载对应的独立 Python放到uv python dir。创建虚拟环境在当前项目下生成.venv/除非你用--no-venv。把选中的 Python 解释器复制/链接进去。安装依赖读取pyproject.toml或requirements.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.exe和pip.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.exe uv 会检查 这只解释器是否存在 它的版本号是否满足项目要求。 如果满足就用它来 创建 .venv/ 虚拟环境.venv\Scripts\python.exe 会指向复制或链接你指定的 D:\Python313\python.exe。) 这样以后项目始终用这只解释器而不会乱掉 安装依赖、生成/更新 uv.lock。 不满足项目要求会报错。3、pycharm,python解释器选择虚拟环境中的python.exe--------------------------------------------------------------condauv1、使用conda创建虚拟环境2、进入i项目的根目录执行uv sync -- python conda虚拟环境里python的目录相当于不人工下载python让conda下载pythonconda管理自己下载的python。卸载uv下载的python版本新建项目uv init时指定已存在的python路径首先需要自己下载python1、在初始化时就指定解释器路径或版本号本地要有 --python指定的解释器.需要提前下载好uv init myproject --python D:\Python313\python.exe结果.python-version会写成3.13对应你给的解释器。pyproject.toml的[project] requires-python也会是3.13。以后uv sync就会用这只解释器。2、先让 uv 安装所需的 Python 版本在uv init时指定下载的python3、先uv init, 再改.python-version然后在uv sync4、uv sync时 指定python版本uv sync --python。还需要自己下pythonuv init不带参数→ 用「当前目录」作为项目带一个目录名→ 在当前目录下创建目录即项目如uv init my_project 在「当前目录」下创建一个叫my_project/的目录然后在里面初始化项目项目已经是git仓库然后想用uv管理直接在项目所在目录执行uv init如果用uv init创建项目不管是带参数还是不带参数uv 会初始化一个 Git 仓库uv add uv pip install别人更新依赖后自己怎么更新uv pip syncrequirements.txt管理的老 Python 项目方式一推荐保留 requirements.txt老项目只有requirements.txt的话最简单就是把 uv 当成更快的venv pip用不一定要立刻迁移到pyproject.toml/uv.lock在哪个目录执行uv venv就在哪个目录下创建.venvuv venv后面可以跟一个目录名或路径这样它就不会默认创建.venv而是按你写的名字/路径创建虚拟环境windows下是Scriptlinux是binuv venv主要是在当前目录创建.venv虚拟环境uv venv会尝试找到可用的 Python如果找不到uv 会下载 Pythonuv venv --python 3.10 指定 Python 版本指定目标版本 自动寻找该版本找到就用找不到就下载uv pip install -r requirements.txt只安装/升级 requirements.txt 里的包环境里多余的包不一定删除。uv pip sync requirements.txt强制环境和 requirements.txt 保持一致多余包会删掉。uv pip install -r requirements.txtuv pip listuv pip install 新包uv pip freeze requirements.txt或者uv pip show 新包手动把新增包写入requirements.txt别人新增依赖后你同步环境就是运行uv pip install -r requirements.txt方式二转换成 pyproject.tomluv init 当前已有项目中生成pyproject.toml把它变成 uv 管理的 Python 项目uv add -r requirements.txtuv runuv run的作用 自动帮你准备/选择合适的虚拟环境然后在那个环境里执行命令。你不需要手动source venv/bin/activate。运行普通项目文件没有# /// script有pyproject.toml。requirements.txt 项目 ❌不会自动生效uv run↓发现 pyproject.toml↓读取项目依赖↓创建/同步项目环境(uv sync)↓运行 main.py运行带# /// script的文件pyproject.tomluv run xx.py uv run python xx.py区别情况一脚本里有# /// script这种元数据# /// script # requires-python 3.12 # dependencies [requests3] # ///uv run xx.py按脚本元数据创建/选择专属环境只按这里写的dependencies/requires-python来装依赖、选 Python 版本。 即使在一个项目目录里它也会忽略项目依赖用的是“脚本自己的环境”。uv run python xx.py 只是“在选好的环境里执行命令python xx.py”不会解析脚本元数据。 所以依赖来自“项目环境 / 当前环境”而不是脚本头上那段# /// script情况二脚本没有元数据没有# /// script这时uv run xx.pyuv run python xx.py在实际使用中对你来说一般可以当一样用都会用 uv 管的环境来执行在有项目pyproject.toml的目录里都会优先用项目环境没项目时就用 uv 选出来的合适 Python 环境来跑命令所以没有脚本元数据时你可以把两者当一样用更推荐写短一点的uv run xx.py总结uv run后面不仅可以跟.py文件还可以跟任何命令行工具、甚至任意系统命令。uv run简单理解为“在特定的 Python 环境上下文虚拟环境中执行后面的那条指令。”uv run 任何内容 自动找到/准备好对应的 Python 虚拟环境 $\rightarrow$ 把$PATH临时指向这个环境的bin目录 $\rightarrow$ 执行你输入的任何内容。uv run 任何内容时uv的处理逻辑如下优先查找当前项目检查当前目录或父级目录下有没有.venv虚拟环境。如果有直接复用。其次检查缓存/临时创建如果当前不在任何 Python 项目里或者你指定了特定参数如--with、--python 3.9uv会在它自己的全局缓存区里临时准备或构建一个环境。隔离执行在这个环境中运行你的命令绝不修改系统全局环境也不污染你当前项目的.venv。python解释器就是负责读取并执行 Python 代码的程序你写的.py文件只是文本Python 解释器负责把这些文本转换成计算机能执行的操作。虚拟环境里面也有一个 Python 解释器虚拟环境里的 Python 解释器就是项目专用的 Python虚拟环境里的 Python 是复制的吗Python 解释器可以安装在任意目录Python 包第三方库安装到哪里是看“当前使用的 Python 解释器对应的环境”。哪个 Python 解释器执行pip包就安装到这个 Python 解释器所属环境的site-packages目录。一个 Python 解释器不是孤立存在的它有一套自己的配置、库搜索路径和安装位置这一整套东西就叫一个 Python 环境sys.prefix表示当前 Python 环境的根目录sys.prefix指向哪里Python 就认为当前环境的“根目录”在哪里python -c import sys; print(sys.prefix)Python 根据sys.prefix推导出对应的site-packages位置(Lib/site-package)pip 就安装到那里sys.prefix /Lib/site-packages -》第三方包位置第三方包不是 Python 官方自带由其他开发者开发需要额外安装的库。.whl是第三方包的一种分发文件格式。打包好的python安装文件是一个zip压缩包一种预编译安装包格式.whl是Wheel 文件Python 包安装格式它是一种已经打包好的 Python 安装文件其实就是一个 zip 压缩包。whl 是这个库发布的一种预编译安装包格式。pip/uv 通常下载 whl然后解压到当前 Python 环境的 site-packages 中。pip安装时发生了什么第一步寻找包pip 去 PyPI 或镜像第二步下载 whl下载requests-2.31.0-py3-none-any.whl其实就是一个 zip 压缩包。为什么需要 whl因为 Python 包不一定都是纯 Python。作者提前编译用户直接安装那源码包是什么除了.whl还有.tar.gz源码包。pip 如果找不到合适的 whl可能下载源码-》本地编译-》安装所以安装慢或者失败环境变量官网环境变量一节https://docs.astral.sh/uv/reference/environment/UV_CACHE_DIR UV_CONFIG_FILE UV_INSTALL_DIR UV_PTYHON_BIN_DIR UV_PYTHON_CACHE_DIR UV_PYTHON_INSTALL_DIR UV_TOOL_BIN_DIR UV_TOOL_DIR uv cache dir uv python dir uc python dir --bin uv tool dir uv tool dir --binuv tool install claude-tap安装命令行工具隔离安装全局可用uv tool install claude-tap这条命令的意思是使用uv包管理器在全局独立的隔离环境中安装名为claude-tap的命令行工具CLIPython 生态里PyPI 上存储的包主要分两类库Library / Package供你在代码里import用的。工具Executable Tool / CLI App开发者用 Python 写出来的独立命令行软件命令行工具(cli)在终端里直接敲名字回车执行的 Python 程序就是“工具”, 即命令行工具Python 生态中的三类常见 PyPI 包纯代码库纯命令行工具混合型(库 命令行工具)对于混合型uv add 之后也能在当前虚拟环境下执行命令行工具
返回列表