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安装时,默认会将uv和uvx安装到~/.local/bin中。
使用uv installer安装的uv可以使用下面的命令进行升级:
uv self updatemacOS上也可通过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时,包以链接方式安装(开发模式),修改源代码后立即生效,无需重新安装,适合本地开发和调试
- 默认为
- pyproject.toml 文件中的
uv正式支持 Android 和 iOS 平台标签。这意味着uv能更好地解析和安装针对这些移动平台的 Python 包。- 随着 Python 在移动和嵌入式领域的应用增多,这一增强使得开发者可以使用
uv为需要 Python 环境的移动应用管理依赖,简化了跨平台开发工作流。 - 在为 Android 或 iOS 项目构建依赖时,
uv会自动识别并选择正确的包变体,无需额外配置。
- 随着 Python 在移动和嵌入式领域的应用增多,这一增强使得开发者可以使用
uv auth认证管理, 全新的认证命令集,用于管理 Python 包仓库的登录凭证。解决了私有包仓库访问的痛点,提供统一的凭证管理方式,让企业用户能够更安全地使用内部包仓库。uv auth login <registry-url>来配置私有仓库认证
uv tree --show-sizes依赖树命令新增的大小显示功能,可以查看每个包占用的磁盘空间。帮助开发者识别"重量级"依赖,优化项目的存储占用和部署大小。这对于容器化部署和存储敏感的环境特别有价值。uv run和uv tool命令支持--python-platform参数- 新增
uv publish --dry-run用于发布前预览 - 在
uv sync,uv add和uv export命令中增加了--no-install-local命令行选项- 这可以阻止uv安装或包含项目中的本地包。这在某些场景下非常有用,例如:当导出一个用于生产环境的纯净的依赖列表时,可以排除掉本地的开发包。
- 引入了一个实验性的新命令
uv format,为代码格式化提供了原生支持 - uv 现在可以直接安装 Pyodide /ˈpaɪ.oʊ.daɪd/ 提供的 Python 版本。Pyodide 是一个将 Python 运行时移植到 WebAssembly 的项目,让 Python 能在浏览器中运行。
- 增加了
UV_DEV和UV_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 install和uv sync命令新增了--resolution标志,允许用户选择最低版本的依赖进行安装。uv pip install和uv sync命令新增了--prerelease标志,允许用户在安装或同步包时包含预发布版本。uv python find命令现在会显示 Python 解释器的路径。