在Windows系统中如何使用python uv项目管理器

1. UV的安装

  1. 独立安装
  • 实测结果:需要科学上网才能进行独立安装
# windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  1. 从 Pypi 安装
  • 在本地端安装python,加入到环境变量;
  • 在cmd窗口使用以下命令安装uv;
  • 备注:如果只是在虚拟环境里面安装uv,请注意如果切换新的虚拟环境,而新的虚拟环境里没有安装过uv,则需要再次安装;
pip install uv

2. 旧项目如何导入UV

  1. 创建requirements.txt
pip list --format=freeze > requirements.txt 
# 用于列出当前环境中已安装的所有 Python 包及其版本,并以 package==version 的格式输出这些包,同时将输出保存到 requirements.txt 文件中
  1. 建立虚拟环境。
uv venv [虚拟环境名称:不填则默认为.venv] --python 3.8 # 创建一个包含python3.8解释器的虚拟环境

在这里插入图片描述

  1. 以当前工作目录初始化项目名称;
uv init
  • 着重关注以下生成文件
    • .python-version:记录当前使用python版本,注意跟项目虚拟环境同步;
    • pyproject.toml:项目的“蓝图”,描述了项目的基本信息和所需的依赖。
      在这里插入图片描述
  1. 激活虚拟环境
 .\.venv\Scripts\activate # 激活创建的虚拟环境.venv是自己创建虚拟环境的名称
  1. 根据requirements.txt安装依赖包
uv add -r .\requirements.txt
  • 前面成功以后,如何在虚拟环境中快速切换python版本

    • 按照下图修改.python-version文件里面的内容为想要的python版本
      在这里插入图片描述

    • 运行以下命令,则会在当前虚拟环境中直接切换python版本,同时也会自动处理安装包依赖

      uv sync
      
      • 运行 uv adduv sync 时,uv 会根据 pyproject.toml 中的依赖声明,解析出具体的版本,并将其记录在 uv.lock 文件中。
        在这里插入图片描述

3. 新项目如何导入UV

  • 只需要执行前面的第2,3,4步就可以了;注意初始化项目的时候,如果不想以当前工作目录文件夹当成项目文件夹,可以按照以下指令;
uv init [项目名称]

4. pyproject.toml和uv.lock介绍

  1. pyproject.toml
    pyproject.toml 是 Python 项目的基础配置文件,用于定义项目的元数据和依赖信息。它是项目的“蓝图”,描述了项目的基本信息和所需的依赖。

    • 主要用途:

      • 项目元数据:定义项目的名称、版本、作者、描述等信息。
      • 依赖声明:列出项目所需的依赖包及其版本范围(例如 requests>=2.26.0)。
      • 构建配置:定义项目的构建工具(如 uv 或其他工具)和配置。
    • 示例内容:

    [project]
    name = "my_project"
    version = "0.1.0"
    description = "A sample project"
    authors = [{ name = "John Doe", email = "john@example.com" }]
    dependencies = [
        "requests>=2.26.0",
        "uvicorn>=0.17.0",
    ]
    
  2. uv.lock 文件
    uv.lock 文件是 uv 工具生成的锁定文件,用于记录项目中安装的依赖包的具体版本和来源。它是项目的“实现蓝图的具体方案”,确保依赖的版本一致性和可重现性。

    • 主要用途:

      • 版本锁定:记录每个依赖包的确切版本(例如 requests==2.28.2)。
      • 来源锁定:记录依赖包的来源(例如 PyPI 或其他仓库)。
      • 环境一致性:确保在不同环境中安装的依赖版本完全一致。
    • 示例内容:

    [[package]]
    name = "requests"
    version = "2.28.2"
    source = "pypi"
    
    [[package]]
    name = "uvicorn"
    version = "0.17.6"
    source = "pypi"
    
  3. 两者的关系
    pyproject.tomluv.lock 文件是相辅相成的,它们的关系可以总结为以下几点:

(1)pyproject.toml 是依赖的声明,uv.lock 是依赖的实现

  • pyproject.toml 定义了项目需要哪些依赖,以及它们的版本范围(例如 requests>=2.26.0)。
  • uv.lock 记录了实际安装的依赖版本(例如 requests==2.28.2),确保每次安装时使用相同的版本。

(2)uv.lock 是从 pyproject.toml 派生出来的

  • 当你运行 uv adduv sync 时,uv 会根据 pyproject.toml 中的依赖声明,解析出具体的版本,并将其记录在 uv.lock 文件中。
  • 如果你手动修改了 pyproject.toml,需要运行 uv sync 来更新 uv.lock 文件。

(3)uv.lock 确保环境一致性

  • 如果团队成员共享项目时只共享 pyproject.toml,可能会因为依赖版本不同而导致环境不一致。
  • 如果同时共享 uv.lock 文件,团队成员可以使用 uv sync 安装完全一致的依赖版本,确保环境一致。
  1. 举例说明

假设你在 pyproject.toml 中添加了一个依赖:

dependencies = [
    "requests>=2.26.0",
]

当你运行 uv add requestsuv sync 时,uv 会解析出一个具体的版本(例如 requests==2.28.2),并将其记录在 uv.lock 文件中:

[[package]]
name = "requests"
version = "2.28.2"
source = "pypi"

如果团队成员克隆了你的项目,并且同时共享了 pyproject.tomluv.lock 文件,他们可以直接运行 uv sync,安装完全一致的依赖版本。

  • 总结
    • pyproject.toml:项目的依赖声明文件,定义了依赖的名称和版本范围。
    • uv.lock:项目的锁定文件,记录了依赖的具体版本和来源,确保环境一致性。
    • 两者关系uv.lock 是从 pyproject.toml 派生出来的,uv.lock 文件的存在使得依赖的安装更加可靠和可重现。
### Python 包管理器 uv使用方法和特性 #### 特性概述 uv 是一个超快速的 Python安装器和解析器,采用 Rust 编写而成[^1]。作为 pip、pip-tools 和 virtualenv 的高效替代方案,uv 提供了显著的速度优势以及更简洁的工作流程。 #### 安装与配置 为了开始使用 uv,需先完成其安装过程。由于具体安装指南可能随版本更新而有所变化,建议查阅官方文档获取最新指导。通常情况下,可以通过以下命令来安装: ```bash cargo install uv ``` 这一步骤依赖于 Cargo 构建系统及其包管理器,适用于已设置好 Rust 开发环境的情况。 #### 创建并激活虚拟环境 uv 同样扮演着 Python 虚拟环境管理者的角色,由 Astral.sh 推出,成为广受瞩目的新一代包管理解决方案之一[^2]。创建新的虚拟环境十分简便: ```bash uv env create my_project_env source ./my_project_env/bin/activate # Unix 或 macOS 下 # 对于 Windows 用户,则应运行: # .\my_project_env\Scripts\activate.bat ``` 上述指令会初始化名为 `my_project_env` 的隔离开发空间,在其中可以自由地测试不同组合下的库依赖关系而不影响全局解释器状态。 #### 添加依赖项 当项目处于活动环境中时,可通过简单的语法声明所需软件包列表: ```toml # pyproject.toml 文件片段 [tool.poetry.dependencies] python = "^3.9" requests = ">=2.28,<3.0" numpy = "*" pandas = {version="^1.4", markers="platform_system != 'Windows'"} ``` 接着利用如下命令同步指定条件至本地副本: ```bash uv sync ``` 此操作不仅能够处理新增加的内容,还会自动调整现有条目以匹配最新的可用版本号。 #### 执行脚本 得益于对 PEP 723 标准的支持,uv 可直接运行带有内联元数据标签的单一文件形式的应用程序[^4]。例如: ```python #! /usr/bin/env python3 """A simple hello world script.""" print("Hello, World!") ``` 保存以上代码到 `.py` 结尾的纯文本档里之后,仅需调用: ```bash uv run path/to/script.py ``` 就能立即看到预期输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值