<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>3 概念 on 编程那些事儿</title><link>https://before80.github.io/prgms/tools/uv/concepts/</link><description>Recent content in 3 概念 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 25 Sep 2026 21:01:20 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/tools/uv/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>3.5 包索引</title><link>https://before80.github.io/prgms/tools/uv/concepts/3.5-indexes/</link><pubDate>Fri, 25 Sep 2026 19:02:24 +0800</pubDate><guid>https://before80.github.io/prgms/tools/uv/concepts/3.5-indexes/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.astral.sh/uv/concepts/indexes/"&gt;https://docs.astral.sh/uv/concepts/indexes/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="35-包索引"&gt;3.5 包索引&lt;/h1&gt;
&lt;p&gt;默认情况下，uv 使用 &lt;a href="https://pypi.org"&gt;Python 包索引（PyPI）&lt;/a&gt;进行依赖解析和包安装。不过，可以通过 &lt;code&gt;[[tool.uv.index]]&lt;/code&gt; 配置选项（以及对应的命令行选项 &lt;code&gt;--index&lt;/code&gt;）把 uv 配置为使用其他包索引，包括私有索引。&lt;/p&gt;</description></item><item><title>3.7 解析</title><link>https://before80.github.io/prgms/tools/uv/concepts/3.7-resolution/</link><pubDate>Fri, 25 Sep 2026 19:02:24 +0800</pubDate><guid>https://before80.github.io/prgms/tools/uv/concepts/3.7-resolution/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.astral.sh/uv/concepts/resolution/"&gt;https://docs.astral.sh/uv/concepts/resolution/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="37-解析"&gt;3.7 解析&lt;/h1&gt;
&lt;p&gt;解析是指把一组要求转换为满足这些要求的一组包版本的过程。解析需要递归搜索包的兼容版本，确保所请求的要求得到满足，并且被请求包的要求之间相互兼容。&lt;/p&gt;</description></item><item><title>3.8 uv 构建后端</title><link>https://before80.github.io/prgms/tools/uv/concepts/3.8-build-backend/</link><pubDate>Fri, 25 Sep 2026 19:02:24 +0800</pubDate><guid>https://before80.github.io/prgms/tools/uv/concepts/3.8-build-backend/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.astral.sh/uv/concepts/build-backend/"&gt;https://docs.astral.sh/uv/concepts/build-backend/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="38-uv-构建后端"&gt;3.8 uv 构建后端&lt;/h1&gt;
&lt;p&gt;构建后端把源码树（即一个目录）转换为源码分发或 wheel。&lt;/p&gt;
&lt;p&gt;uv 支持所有构建后端（如 &lt;a href="https://peps.python.org/pep-0517/"&gt;PEP 517&lt;/a&gt; 所规定），同时也提供了一个原生构建后端（&lt;code&gt;uv_build&lt;/code&gt;），它与 uv 紧密集成以改善性能和用户体验。&lt;/p&gt;</description></item><item><title>3.11 工具</title><link>https://before80.github.io/prgms/tools/uv/concepts/3.11-tools/</link><pubDate>Fri, 25 Sep 2026 19:02:24 +0800</pubDate><guid>https://before80.github.io/prgms/tools/uv/concepts/3.11-tools/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.astral.sh/uv/concepts/tools/"&gt;https://docs.astral.sh/uv/concepts/tools/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="311-工具"&gt;3.11 工具&lt;/h1&gt;
&lt;p&gt;工具是提供命令行接口的 Python 包。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;关于使用工具接口的入门介绍，请参阅&lt;a href="../guides/2.3-tools/"&gt;工具指南&lt;/a&gt; —— 本文档讨论工具管理的细节。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="uv-tool-接口"&gt;&lt;code&gt;uv tool&lt;/code&gt; 接口&lt;/h2&gt;
&lt;p&gt;uv 包含专门用于与工具交互的接口。工具可以在不安装的情况下用 &lt;code&gt;uv tool run&lt;/code&gt; 调用，此时它们的依赖会被安装到与当前项目隔离的临时虚拟环境中。&lt;/p&gt;</description></item><item><title>3.12 Python 版本</title><link>https://before80.github.io/prgms/tools/uv/concepts/3.12-python-versions/</link><pubDate>Fri, 25 Sep 2026 19:02:24 +0800</pubDate><guid>https://before80.github.io/prgms/tools/uv/concepts/3.12-python-versions/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.astral.sh/uv/concepts/python-versions/"&gt;https://docs.astral.sh/uv/concepts/python-versions/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="312-python-版本"&gt;3.12 Python 版本&lt;/h1&gt;
&lt;p&gt;一个 Python 版本由 Python 解释器（即 &lt;code&gt;python&lt;/code&gt; 可执行文件）、标准库以及其他支持文件组成。&lt;/p&gt;
&lt;h2 id="受管与系统-python-安装"&gt;受管与系统 Python 安装&lt;/h2&gt;
&lt;p&gt;由于系统上通常已有 Python 安装，uv 支持&lt;a href="#discovery-of-python-versions"&gt;发现&lt;/a&gt; Python 版本。不过 uv 也支持自行&lt;a href="#installing-a-python-version"&gt;安装 Python 版本&lt;/a&gt;。为区分这两类 Python 安装，uv 把它安装的 Python 版本称为&lt;em&gt;受管&lt;/em&gt; Python 安装，把所有其他 Python 安装称为&lt;em&gt;系统&lt;/em&gt; Python 安装。&lt;/p&gt;</description></item><item><title>3.13 配置文件</title><link>https://before80.github.io/prgms/tools/uv/concepts/3.13-configuration-files/</link><pubDate>Fri, 25 Sep 2026 19:02:24 +0800</pubDate><guid>https://before80.github.io/prgms/tools/uv/concepts/3.13-configuration-files/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.astral.sh/uv/concepts/configuration-files/"&gt;https://docs.astral.sh/uv/concepts/configuration-files/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="313-配置文件"&gt;3.13 配置文件&lt;/h1&gt;
&lt;p&gt;uv 支持项目级和用户级的持久配置文件。&lt;/p&gt;
&lt;p&gt;具体来说，uv 会在当前目录或最近的父目录中搜索 &lt;code&gt;pyproject.toml&lt;/code&gt; 或 &lt;code&gt;uv.toml&lt;/code&gt; 文件。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对于在用户级别运行的 &lt;code&gt;tool&lt;/code&gt; 命令，本地配置文件会被忽略。此时 uv 只会读取用户级配置（例如 &lt;code&gt;~/.config/uv/uv.toml&lt;/code&gt;）和系统级配置（例如 &lt;code&gt;/etc/uv/uv.toml&lt;/code&gt;）。&lt;/p&gt;</description></item><item><title>3.16 缓存</title><link>https://before80.github.io/prgms/tools/uv/concepts/3.16-cache/</link><pubDate>Fri, 25 Sep 2026 19:02:24 +0800</pubDate><guid>https://before80.github.io/prgms/tools/uv/concepts/3.16-cache/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.astral.sh/uv/concepts/cache/"&gt;https://docs.astral.sh/uv/concepts/cache/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="316-缓存"&gt;3.16 缓存&lt;/h1&gt;
&lt;h2 id="依赖缓存"&gt;依赖缓存&lt;/h2&gt;
&lt;p&gt;uv 使用积极缓存，以避免重新下载（和重新构建）此前运行中已访问过的依赖。&lt;/p&gt;
&lt;p&gt;uv 缓存语义的具体细节取决于依赖的性质：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;对于仓库依赖&lt;/strong&gt;（例如从 PyPI 下载的那些），uv 遵循 HTTP 缓存头。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对于直接 URL 依赖&lt;/strong&gt;，uv 遵循 HTTP 缓存头，同时还会根据 URL 本身缓存。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对于 Git 依赖&lt;/strong&gt;，uv 根据完全解析出的 Git 提交哈希缓存。因此 &lt;code&gt;uv pip compile&lt;/code&gt; 在写出解析后的依赖集合时，会把 Git 依赖固定到特定提交哈希。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对于本地依赖&lt;/strong&gt;，uv 根据源归档（即本地 &lt;code&gt;.whl&lt;/code&gt; 或 &lt;code&gt;.tar.gz&lt;/code&gt; 文件）的最后修改时间缓存。对于目录，uv 根据 &lt;code&gt;pyproject.toml&lt;/code&gt;、&lt;code&gt;setup.py&lt;/code&gt; 或 &lt;code&gt;setup.cfg&lt;/code&gt; 文件的最后修改时间缓存。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对于扁平索引&lt;/strong&gt;（即 &lt;code&gt;--find-links&lt;/code&gt; 位置），uv 假定索引内容不可变，按名称缓存每个文件。因此，用新内容替换同名文件（例如把重新构建的 wheel 放入 &lt;code&gt;--find-links&lt;/code&gt; 目录）在缓存刷新之前不会被识别。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你遇到缓存问题，uv 提供了一些应急手段：&lt;/p&gt;</description></item><item><title>3.17 预览特性</title><link>https://before80.github.io/prgms/tools/uv/concepts/3.17-preview/</link><pubDate>Fri, 25 Sep 2026 19:02:24 +0800</pubDate><guid>https://before80.github.io/prgms/tools/uv/concepts/3.17-preview/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://docs.astral.sh/uv/concepts/preview/"&gt;https://docs.astral.sh/uv/concepts/preview/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="317-预览特性"&gt;3.17 预览特性&lt;/h1&gt;
&lt;p&gt;uv 包含需要显式启用的预览特性，以便收集社区反馈，并在面向所有人启用之前提高对“这些改动确有益处”的信心。&lt;/p&gt;
&lt;h2 id="启用预览特性"&gt;启用预览特性&lt;/h2&gt;
&lt;p&gt;要启用所有预览特性，请使用 &lt;code&gt;--preview&lt;/code&gt; 标志：&lt;/p&gt;</description></item></channel></rss>