青蛙小白
目录

uv

一个极快的Python包和项目管理器,用Rust编写。

安装

推荐使用uv官方的installer在线安装(需要科学上网)。

对macOS和Linux使用uv installer安装:

curl -LsSf https://astral.sh/uv/install.sh | sh
# 使用proxychains代理的安装命令
proxychains curl -LsSf https://astral.sh/uv/install.sh | proxychains sh

使用uv installer安装时,默认会将uvuvx安装到~/.local/bin中。

使用uv installer安装的uv可以使用下面的命令进行升级:

uv self update
macOS上也可通过homebrew安装uv和更新uv

基本使用

使用uv安装python -> 安装Python

显示依赖树:

uv tree

显示某个包的上下游依赖:

# uv pip show <package-name>
uv pip show langchain-core    
Name: langchain-core
Version: 0.3.69
Requires: jsonpatch, langsmith, packaging, pydantic, pyyaml, tenacity, typing-extensions
Required-by: langchain, langchain-community, langchain-openai, langchain-postgres, langchain-text-splitters

更新项目依赖:

uv sync

版本更新关注

只记录个人正在关注或使用的功能

  • v0.9.7~v0.9.0
    • 新增 --clear,允许在构建前自动清理过期的构建产物
    • 新增 --no-create-gitignore 选项让用户可以自定义版本控制策略,不再被强制创建 gitignore 文件
    • 工具可见性增强: uv tool list 命令新增 --show-python 标志,可以显示工具关联的 Python 版本信息。uv tool list --show-python
    • 新增环境变量: UV_UPLOAD_HTTP_TIMEOUT: 专门用于控制上传操作的 HTTP 超时时间,UV_WORKING_DIRECTORY: 允许通过环境变量设置工作目录,等同于 --directory 选项。
    • 安全性增强:日志脱敏 - 引入了日志中的敏感令牌值混淆功能。避免在日志中暴露 PyPI 认证令牌等敏感信息,造成安全风险。 在日志输出中自动混淆认证令牌等敏感值,防止凭证泄露。
    • 新增了两项 GPU 相关的重要功能:CUDA 13.0 支持和Windows 平台上的 Intel GPU 自动检测。uv 通过支持最新的 CUDA 版本和自动检测 Intel GPU,简化了依赖包的安装流程。这意味着在安装 PyTorch、TensorFlow 等框架时,uv 可以更智能地选择合适的 GPU 加速版本,减少手动配置的麻烦。
    • uv 0.9.0 正式支持 Python 3.14.0,并将其设置为默认的稳定 Python 版本
  • v0.8.24~v0.8.1
    • uv cache clean 命令添加 --force,提供了可靠的缓存状态重置方法
    • uv venv 命令新增了 --no-clear 命令行选项
      • 在默认情况下,uv venv 会在创建新环境前清空目标目录。--no-clear 标志可以阻止这个行为,防止用户意外删除一个已经存在的、重要的虚拟环境。这为破坏性操作增加了一道安全锁
    • 允许使用 --editable 命令行标志覆盖 pyproject.toml 文件中 editable = false 的设置,为本地开发和调试提供了更大的灵活性。
      • pyproject.toml 文件中的 editable = false 设置用于控制包(当前项目)的安装模式:
        • 默认为false, 包会被复制到 site-packages 目录
        • 修改为true时,包以链接方式安装(开发模式),修改源代码后立即生效,无需重新安装,适合本地开发和调试
    • uv 正式支持 Android 和 iOS 平台标签。这意味着 uv 能更好地解析和安装针对这些移动平台的 Python 包。
      • 随着 Python 在移动和嵌入式领域的应用增多,这一增强使得开发者可以使用 uv 为需要 Python 环境的移动应用管理依赖,简化了跨平台开发工作流。
      • 在为 Android 或 iOS 项目构建依赖时,uv 会自动识别并选择正确的包变体,无需额外配置。
    • uv auth认证管理, 全新的认证命令集,用于管理 Python 包仓库的登录凭证。解决了私有包仓库访问的痛点,提供统一的凭证管理方式,让企业用户能够更安全地使用内部包仓库。
      • uv auth login <registry-url> 来配置私有仓库认证
    • uv tree --show-sizes依赖树命令新增的大小显示功能,可以查看每个包占用的磁盘空间。帮助开发者识别"重量级"依赖,优化项目的存储占用和部署大小。这对于容器化部署和存储敏感的环境特别有价值。
    • uv runuv tool 命令支持 --python-platform 参数
    • 新增 uv publish --dry-run 用于发布前预览
    • uv sync, uv adduv export 命令中增加了 --no-install-local命令行选项
      • 这可以阻止uv安装或包含项目中的本地包。这在某些场景下非常有用,例如:当导出一个用于生产环境的纯净的依赖列表时,可以排除掉本地的开发包。
    • 引入了一个实验性的新命令uv format,为代码格式化提供了原生支持
    • uv 现在可以直接安装 Pyodide /ˈpaɪ.oʊ.daɪd/ 提供的 Python 版本。Pyodide 是一个将 Python 运行时移植到 WebAssembly 的项目,让 Python 能在浏览器中运行。
    • 增加了 UV_DEVUV_NO_DEV 环境变量,分别对应 --dev--no-dev 命令行选项。
    • 安全加固 (CVE-2025-54368)
      • uv 0.8.6增强了其内置的 ZIP 文件解析器,以拒绝那些可能被恶意制作的 ZIP 文件
      • 由于更严格的 ZIP 文件验证,一些非恶意的、但格式不规范的 ZIP 文件现在可能会被 uv 拒绝安装。如果遇到这种情况,可以设置环境变量 UV_INSECURE_NO_ZIP_VALIDATION=1来临时禁用此检查,但这会使系统面临潜在的安全风险
    • 支持在 uv tool install 中安装额外的可执行文件
    • 支持 uv run 直接运行 GitHub Gist
    • 新增了 UV_INIT_BUILD_BACKEND 环境变量,允许为 uv init 命令指定构建后端。
    • uv pip installuv sync 命令新增了 --resolution 标志,允许用户选择最低版本的依赖进行安装。
    • uv pip installuv sync 命令新增了 --prerelease 标志,允许用户在安装或同步包时包含预发布版本。
    • uv python find 命令现在会显示 Python 解释器的路径。

相关

评论