在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 文件的存在使得依赖的安装更加可靠和可重现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值