Rust编写的Python包管理器UV介绍和使用指南

文章目录

  • 一、关于 UV
  • 亮点
  • 二、上手使用
  • 三、项目管理
  • 四、工具管理
  • 五、Python管理
  • 六、脚本支持
  • 七、pip接口

  • 一、关于 UV

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

  • 官方文档:https://docs.astral.sh/uv/
  • github : https://github.com/astral-sh/uv

  • 使用 warm cache 安装Trio的依赖项。


    亮点

  • 🚀一个单一的工具来代替pippip-toolspipxpoetrypyenvtwinevirtualenv,等等。
  • ⚡10-100倍快于pip
  • 🐍安装和管理Python版本。
  • 🛠️运行和安装Python应用程序。
  • ❇️运行脚本,支持内联依赖元数据。
  • 🗂️提供全面的项目管理,具有通用锁文件。
  • 🔩包括一个与pip兼容的接口,通过熟悉的CLI提高性能。
  • 🏢支持可伸缩项目的Cargo样式工作区。
  • 💾磁盘空间高效,具有全局缓存,用于依赖消重。
  • ⏬通过curlpip安装没有Rust或Python。
  • 🖥️支持macOS、Linux和Windows。
  • UV 由 Ruff 的创造者 Astral 支持。


    二、上手使用

    使用我们的官方独立安装程序安装uv:

    macOS和Linux

    curl -LsSf https://astral.sh/uv/install.sh | sh
    

    然后,查看第一步或继续阅读简要概述。


    Windows:

    powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
    

    注意:uv也可以与pip、Homebrew等一起安装。请参阅安装页面上的所有方法。


    三、项目管理

    uv管理项目依赖和环境,支持lockfile、工作区等,类似于ryepoetry

    $ uv init example
    Initialized project `example` at `/home/user/example`
    
    $ cd example
    
    $ uv add ruff
    Creating virtual environment at: .venv
    Resolved 2 packages in 170ms
       Built example @ file:///home/user/example
    Prepared 2 packages in 627ms
    Installed 2 packages in 1ms
     + example==0.1.0 (from file:///home/user/example)
     + ruff==0.5.4
    
    $ uv run ruff check
    All checks passed!
    

    请参阅项目指南以开始。

    uv还支持构建和发布项目,即使它们不是用uv管理的。请参阅发布指南以了解更多信息。


    四、工具管理

    uv执行并安装Python包提供的命令行工具,类似于pipx

    使用uvxuv tool run的别名)在临时环境中运行工具:

    $ uvx pycowsay 'hello world!'
    Resolved 1 package in 167ms
    Installed 1 package in 9ms
     + pycowsay==0.0.0.2
      """
    
      ------------
    < hello world! >
      ------------
       \   ^__^
        \  (oo)_______
           (__)\       )\/\
     ||----w |
     || ||
    

    使用uv tool install工具:

    $ uv tool install ruff
    Resolved 1 package in 6ms
    Installed 1 package in 2ms
     + ruff==0.5.4
    Installed 1 executable: ruff
    
    $ ruff --version
    ruff 0.5.4
    

    请参阅工具指南以开始使用。


    五、Python管理

    uv安装Python并允许在版本之间快速切换。

    安装多个Python版本:

    $ uv python install 3.10 3.11 3.12
    Searching for Python versions matching: Python 3.10
    Searching for Python versions matching: Python 3.11
    Searching for Python versions matching: Python 3.12
    Installed 3 versions in 3.42s
     + cpython-3.10.14-macos-aarch64-none
     + cpython-3.11.9-macos-aarch64-none
     + cpython-3.12.4-macos-aarch64-none
    

    根据需要下载Python版本:

    $ uv venv --python 3.12.0
    Using CPython 3.12.0
    Creating virtual environment at: .venv
    Activate with: source .venv/bin/activate
    
    $ uv run --python pypy@3.8 -- python
    Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, Dec 29 2022, 11:45:30)
    [PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>>>
    

    在当前文件夹使用指定 Python 版本:

    $ uv python pin 3.11
    Pinned `.python-version` to `3.11`
    

    查阅 installing Python guide 来开始。


    六、脚本支持

    uv管理单文件脚本的依赖项和环境。

    创建一个新脚本并添加声明其依赖项的内联元数据:

    $ echo 'import requests; print(requests.get("https://astral.sh"))' > example.py
    
    $ uv add --script example.py requests
    Updated `example.py`
    

    然后,在隔离的虚拟环境中运行脚本:

    $ uv run example.py
    Reading inline script metadata from: example.py
    Installed 5 packages in 12ms
    <Response [200]>
    

    请参阅脚本指南以开始使用。


    七、pip接口

    uv提供了常用pippip-toolsvirtualenv命令的直接替代品。

    UV通过高级功能扩展了它们的接口,例如依赖版本覆盖、platform-independent分辨率、可重现分辨率、替代分辨率策略等。

    在不改变现有工作流程的情况下迁移到uv,并使用uv pip界面体验10-100倍的加速。

    将需求编译成platform-independent需求文件:

    $ uv pip compile docs/requirements.in \
       --universal \
       --output-file docs/requirements.txt
    Resolved 43 packages in 12ms
    

    创建虚拟环境:

    $ uv venv
    Using CPython 3.12.3
    Creating virtual environment at: .venv
    Activate with: source .venv/bin/activate
    

    安装锁定的要求:

    $ uv pip sync docs/requirements.txt
    Resolved 43 packages in 11ms
    Installed 43 packages in 208ms
     + babel==2.15.0
     + black==24.4.2
     + certifi==2024.7.4
     ...
    

    请参阅pip接口文档以开始使用。


    2025-02-03(一)

    作者:知识搬运bot

    物联沃分享整理
    物联沃-IOTWORD物联网 » Rust编写的Python包管理器UV介绍和使用指南

    发表回复