ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

uv 0.1.x 版本史精读:pip 接口、缓存、认证与持久化配置的完整演进

uv 0.1.x 版本史精读:pip 接口、缓存、认证与持久化配置的完整演进 uv 0.1.x 版本史精读pip 接口、缓存、认证与持久化配置的完整演进【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uvuv 0.1.x 系列是该项目从pip 替代工具走向完整 Python 项目管理器的关键阶段覆盖 0.1.1 到 0.1.45 共 45 个补丁版本其发布记录完整保留在 changelogs/0.1.x.md 中。本篇基于该变更日志逐段展开结合当前仓库的源码布局与文档梳理这一时期uv pip各子命令的补齐过程、环境变量与持久化配置的引入节奏、认证与缓存体系的关键修复以及 0.1.40 起以预览功能形式登场的项目接口——这些预览功能正是后来uv sync、uv.lock项目工作流的直接前身。0.1.x 系列的整体脉络从变更日志的章节分布可以归纳出 0.1.x 期的四条主线pip 接口能力补齐compile、sync、install先行list、show、check、freeze随后逐个落地配置面扩张环境变量从个别开关扩展到覆盖索引、超时、认证、链接模式等0.1.42 起引入持久化配置文件认证与 TLS 体系修正.netrc、keyring、系统信任存储、--native-tls开关缓存与解析性能优化预取、并行解析器、内存索引。当前仓库中 0.1.x 期引入的命令与今日实现一脉相承可以在 crates/uv/src/commands/pip/ 目录下看到compile.rs、sync.rs、install.rs、list.rs、show.rs、check.rs、freeze.rs、uninstall.rs等命令实现文件它们对应的正是日志中各版本新增某命令的记录。pip 子命令的逐步补齐早期install 与 compile 的升级能力0.1.1–0.1.20.1.1 修复了python3不在全局路径时的查找问题0.1.2 是 pip 接口的重要一步pip install支持--upgrade并新增-U/-P短标志--upgrade/--upgrade-package新增UV_NO_CACHE环境变量uv-cache增加--no-cache-dir隐藏别名一系列requirements.txt解析修正-r/-c条目相对包含文件解析、尾逗号处理、HTML 索引中相对 URL 解析等。中前期内省命令落地0.1.6–0.1.22按日志顺序环境内省类命令的引入节奏为版本命令/能力说明0.1.6uv cache dir显示缓存目录uv clean同时更名为uv cache clean缓存操作统一收归uv cache子命令树0.1.6venv --prompt、创建后打印激活指令改进 venv 体验-f成为--find-links别名并新增 shell 补全生成0.1.11uv pip list、freezeround-trip支持--exclude-editable/--exclude0.1.12 补充freeze输出可再次作为输入0.1.16uv pip show0.1.18 补充 Requires 字段0.1.25 再补充Editable project location与Required-by0.1.22uv pip check环境一致性检查0.1.23uv self update自更新命令0.1.24 起改为 opt-in 的 Cargo feature0.1.28 修复 Linux 上的自更新0.1.6 引入的uv cache dir在当前仓库中的实现是 cache_dir.rs逻辑非常直接取出Cache根路径并以简化形式打印。缓存清理相关的 cache_clean.rs、cache_prune.rs 等也属于这一子命令树的组成部分0.1.24 引入的缓存垃圾回收机制uv cache prune即在此后持续演进。解释器选择的两次关键增强0.1.12、0.1.14–0.1.160.1.12 引入的两个全局开关影响深远--python允许将包装入任意 Python 解释器--system显式选择非虚拟环境的系统解释器同时开始向用户透出EXTERNALLY-MANAGED错误信息。随后的修复大量围绕 Windows 解释器发现展开Windows Store shim、pylauncher 的 stderr 干扰、pyenv shim 等0.1.14 起uv venv支持--system-site-packages。0.1.16 进一步补充--no-build-isolation与--break-system-packages并让--system安装兼容 Debian 等非 sysconfig 体系发行版——从变更日志看这正是 uv 从仅支持干净虚拟环境走向尊重各类系统 Python的转折。环境变量与持久化配置的演进环境变量时间线0.1.x 期引入的环境变量在日志中有明确记录按主题归类缓存UV_NO_CACHE0.1.2索引UV_EXTRA_INDEX_URL0.1.3 引入0.1.14 改用空格分隔UV_INDEX_URL等由索引参数派生超时UV_HTTP_TIMEOUT与通用HTTP_TIMEOUT0.1.70.1.35 将超时语义改为按读取计时而非按请求计时0.1.37 把默认 HTTP 读取超时调整为 30 秒TLS/认证UV_NATIVE_TLS0.1.19、UV_KEYRING_PROVIDER系列解析行为UV_PRERELEASE0.1.16、UV_RESOLUTION0.1.27、UV_CONSTRAINT0.1.36安装目标UV_SYSTEM_PYTHON0.1.18 作为--system别名、UV_BREAK_SYSTEM_PACKAGES0.1.32、UV_PYTHON0.1.40、UV_LINK_MODE0.1.40、UV_NO_BUILD_ISOLATION0.1.40安全UV_REQUIRE_HASHES0.1.34并发UV_CONCURRENT_INSTALLS0.1.45 取代RAYON_NUM_THREADS的作用。这些环境变量在今天的源码中依然以 clap 参数形式绑定可以在 crates/uv-cli/src/lib.rs 中检索到env EnvVars::UV_PYTHON、env EnvVars::UV_SYSTEM_PYTHON、env EnvVars::UV_BREAK_SYSTEM_PACKAGES、env EnvVars::UV_LINK_MODE、env EnvVars::UV_CONSTRAINT、env EnvVars::UV_RESOLUTION、env EnvVars::UV_REQUIRE_HASHES、env EnvVars::UV_EXTRA_INDEX_URL、env EnvVars::UV_CONFIG_FILE等声明说明 0.1.x 期建立的每个 CLI 开关都有环境变量对应的惯例被延续至今。0.1.34 还统一了布尔环境变量的取值接受0/1这类值0.1.35 允许UV_SYSTEM_PYTHON1。0.1.42持久化配置的稳定化0.1.42 是配置面最重要的版本日志原文说明uv will now read project configuration from apyproject.tomloruv.tomlfile in the current directory or any parent directory, along with user configuration at~/.config/uv/uv.toml(or$XDG_CONFIG_HOME/uv/uv.toml) on macOS and Linux, and%APPDATA%\uv\uv.tomlon Windows.即项目级配置从当前目录及父目录的pyproject.toml读取[tool.uv]表或uv.toml读取用户级配置位于~/.config/uv/uv.tomlmacOS/Linux或%APPDATA%\uv\uv.tomlWindows。同版本还把 JSON Schema 导出到了 SchemaStore仓库中的 uv.schema.json 即其产物并合并了用户与工作区设置。这一机制在当前文档 docs/concepts/configuration-files.md 中有完整说明包括后续新增的系统级配置/etc/uv/uv.toml以及uv.toml优先于pyproject.toml的规则。配置合并逻辑也在 0.1.45 进一步完善Apply combination logic to merge CLI and persistent configuration#3618。认证与网络栈的加固0.1.x 的认证演进脉络非常清晰0.1.3HTTPS 请求改用系统信任存储0.1.16支持.netrc认证配套 crate 为 crates/uv-netrc/同期支持远程https://requirements 文件0.1.18破坏性变更依赖原生根证书或SSL_CERT_FILE的用户必须显式传--native-tls实现运行时 TLS 切换0.1.19 随即放宽允许使用SSL_CERT_FILE而不强制--native-tls并新增UV_NATIVE_TLS环境变量与 keyring 凭据支持0.1.24修复用户名含的认证问题0.1.33破坏性变更keyring 凭据查找要求索引 URL 提供用户名不再默认假设oauth2accesstoken日志中给出了 Google Artifact Registry 的迁移示例在 URL 中显式写出https://oauth2accesstokenurl。网络层的修复同样密集HEAD 404/403 时的回退0.1.15、0.1.33、range request 保留认证0.1.10、Artifactory 索引的优雅降级0.1.4、HTML 索引的 URL 解码0.1.3/0.1.15/0.1.17、以及 Git 依赖改用git命令行而非libgit2以增强 SSH 支持0.1.7。HTTP 客户端相关的实现可在 crates/uv-client/ 与 crates/uv-auth/ 中进一步查证。缓存与解析性能演进日志中Performance小节的出现本身就标志着 uv 将性能作为独立维护目标0.1.10移除版本映射中的spawn_blocking修复 gzip 响应与 PEP 691HTML 内嵌版本元数据处理0.1.19版本区间操作性能改进0.1.24Git ref 内存缓存引入未命名需求的 PEP 517 构建支持0.1.28预解析阶段统一走 distribution database 与 indexlookahead URL 时填充内存索引0.1.30批量预取加速冷缓存下urllib3-boto3-botocore这类典型依赖链的解析0.1.33包优先级启发式0.1.45解析器并行化Parallelize resolver#3627这是该系列最后一次大版本迭代的核心性能动作。缓存正确性方面0.1.x 修复了多类问题构建源分发包时改用缓存目录而非全局临时目录0.1.5、缓存损坏时的自愈0.1.6、凭据更新不再触发缓存失效0.1.32、缓存清理对无读权限目录的健壮性0.1.43。CACHEDIR.TAG在 0.1.5 起写入 uv 创建的虚拟环境便于系统识别缓存目录。必须留意的破坏性变更0.1.x 期共有四处值得迁移时注意的破坏性变更均直接摘自日志原文0.1.18原生根证书/SSL_CERT_FILE行为改为需显式--native-tls0.1.24uv pip uninstall不再接受-e/--editable形式指定卸载目标改为直接支持未命名需求0.1.25overrides 与 constraints 仅限requirements.txt格式同时 CLI 禁止pip uninstall -r引用pyproject.toml0.1.33keyring 凭据要求 URL 中携带用户名见上文迁移说明。另有一个特殊案例0.1.44是一个回退发布撤销了 0.1.43 中manylinux: auto 启用 musllinux_1_2 aarch64 构建的变更因为该改动在构建 aarch64 Docker 镜像时引入了invalid peer certificate: BadSignature类 SSL 错误日志明确说明恢复 0.1.42 的构建行为。这类发布记录里的回退对判断某版本构建产物的可信度很有参考价值。0.1.40–0.1.45项目接口的预览期0.1.40 开始日志中出现了独立的Preview features小节这条线索实际上就是 uv 项目工作流的胚胎0.1.40tool.uv.sources基础支持#3263以 preview 模式启用、install from lock file 初版#3340、universal lock file format 初始版本#33140.1.42uv run --with使用环境分层0.1.43uv run项目分层发现、基于项目根读写uv.lock、从pyproject.toml读取包名并把 workspace API 更名为project API#34890.1.45lockfile 补齐全量分发的哈希与版本#3589、registry 源分发包支持#3649、registry 文件大小#3652、Git 依赖的无损序列化#3630、direct URL 与本地路径转换#3633/#3609、sourcedist更名为sdist#3590。这些预览功能在 0.2.0 稳定为uv init/uv add/uv sync/uv run与uv.lock体系。当前仓库中的 uv-workspace、uv-resolverlockfile 读写等 crate 即承接了这一演进仓库根目录的 uv.lock 文件本身也是这一机制的实际产物。小结与延伸阅读0.1.x 变更日志的价值在于它精确标注了 uv pip 接口每个能力的引入时点、每一次破坏性变更的动机与迁移方式以及项目工作流从预览到稳定的完整过渡。结合当前仓库可以继续深入的材料完整变更记录changelogs/0.1.x.md0.1.1–0.1.45 全文后续系列见同目录下 0.2.x–0.11.x 各文件pip 命令实现crates/uv/src/commands/pip/CLI 参数与环境变量绑定crates/uv-cli/src/lib.rs持久化配置机制说明docs/concepts/configuration-files.md缓存体系实现crates/uv-cache/缓存清理/修剪命令见 crates/uv/src/commands/cache_prune.rs。若你在维护基于 0.1.x 期命令习惯的脚本重点核对上文必须留意的破坏性变更四处的行为差异若要复现当时的配置方式则 0.1.42 起才具备uv.toml持久化配置更早的版本只能通过命令行参数与环境变量传参。【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表