首页 > 编程语言 >Tox-uv:Python测试环境搭建的新利器

Tox-uv:Python测试环境搭建的新利器

时间:2024-10-29 08:47:23浏览次数:7  
标签:Tox venv Python lock uv tox runner 使用

在Python开发中,测试环境的搭建是一个不可或缺的环节。传统的虚拟环境管理工具如virtualenv和pip虽然功能强大,但在某些场景下可能存在性能瓶颈。为了解决这一问题,tox-uv应运而生,它是一个tox插件,旨在用uv工具替代virtualenv和pip,以提升测试环境搭建的性能。

Tox-uv简介

tox-uv是一个创新的tox插件,它通过使用uv工具来创建和管理虚拟环境,从而提高了Python项目的测试效率。uv是一个高效的包管理器,它在安装包时不需要依赖于系统级的pip,因此可以更快地完成依赖的安装和环境的搭建。

如何使用Tox-uv

要使用tox-uv,首先需要在你的tox环境中安装它。安装完成后,tox-uv将自动替换virtualenv和pip,用于后续的所有运行:

bash

uv tool install tox --with tox-uv # 使用uv安装tox
tox --version # 验证是否使用了安装的tox
tox r -e py312 # 将使用uv
tox --runner virtualenv r -e py312 # 将使用virtualenv+pip

Tox环境类型

Tox-uv提供了几种新的tox环境类型,以适应不同的测试需求:

  • uv-venv-runner:这是不使用锁文件的tox环境运行器的ID。
  • uv-venv-lock-runner:这是使用uv.lock的tox环境运行器的ID。
  • uv-venv-pep-517:这是PEP-517打包环境的ID。
  • uv-venv-cmd-builder:这是外部cmd构建器的ID。

uv.lock支持

如果你希望tox环境使用uv与uv.lock文件同步,你需要为该tox环境更改运行器为uv-venv-lock-runner。此外,在这些环境中,如果你使用extras配置来指示uv安装指定的额外包,例如:

[testenv:fix]
description = 运行代码格式化程序和linter(自动修复)
skip_install = true
deps =
    pre-commit-uv>=4.1.1
commands =
    pre-commit run --all-files --show-diff-on-failure

[testenv:type]
runner = uv-venv-lock-runner
description = 通过mypy运行类型检查器
commands =
    mypy {posargs:src}

[testenv:dev]
runner = uv-venv-lock-runner
description = 开发环境
extras =
    dev
    test
    type
commands =
    uv pip tree

在这个示例中:

  • fix将使用uv-venv-runner并使用uv pip install安装依赖到环境中。
  • type将使用uv-venv-lock-runner并使用uv sync安装依赖到环境中,不包含任何额外的组。
  • dev将使用uv-venv-lock-runner并使用uv sync安装依赖到环境中,包括devtesttype额外的组。

请注意,当使用uv-venv-lock-runner时,所有依赖项都将来自锁文件,由extras控制。因此,deps等选项将被忽略。

额外的配置选项

Tox-uv还提供了一些额外的配置选项,以进一步定制你的测试环境:

  • extras:一个字符串列表,用于选择你想要与uv sync一起安装的额外组。默认为空。
  • with_dev:一个布尔标志,用于切换是否安装uv开发依赖项。默认为false。
  • uv_sync_flags:一个字符串列表,包含传递给uv sync的额外标志。例如,如果你想以非可编辑模式安装包并保留安装在环境中的额外包,可以这样做:
uv_sync_flags = --no-editable, --inexact

外部包支持

如果tox被调用时带有--installpkg标志(参数必须是wheel或源码分发),同步操作将使用--no-install-project运行,之后将使用uv pip install来安装提供的包。

环境创建

我们使用uv venv来创建虚拟环境。这个过程可以通过以下选项进行配置:

  • uv_seed:这个标志设置在tox环境级别,控制创建的虚拟环境是否注入pip、setuptools和wheel。默认为关闭。如果你的项目使用旧的legacy-editable模式,或者你的项目不支持由pyproject.toml驱动的隔离构建模型,你需要设置这个选项。
  • uv_python_preference:这个标志设置在tox环境级别,控制uv如何选择Python解释器。

默认情况下,uv会尝试使用系统上找到的Python版本,只有在必要时才会下载托管的解释器。然而,你可以使用python-preference选项调整uv的Python版本选择偏好。

包安装

我们使用uv pip将包安装到虚拟环境中。这种行为可以通过以下选项进行配置:

  • uv_resolution:这个标志设置在tox环境级别,通知uv所需的解析策略:

    • highest:(默认)选择满足约束条件的包的最高版本。
    • lowest:安装所有依赖项(包括直接和间接)的最低兼容版本。
    • lowest-direct:选择所有直接依赖项的最低兼容版本,同时使用所有间接依赖项的最新兼容版本。

这是一个uv特有的功能,如果测试执行期间的目的是验证你的依赖项的下限,它可以作为冻结约束的替代品。

结语

Tox-uv的出现,为Python测试环境的搭建提供了新的选择。通过使用uv工具,它不仅提高了性能,还简化了环境管理的复杂性。对于追求高效开发流程的Python开发者来说,tox-uv无疑是一个值得尝试的工具。随着Python生态的不断发展,我们期待tox-uv能够带来更多的创新和改进。

标签:Tox,venv,Python,lock,uv,tox,runner,使用
From: https://blog.csdn.net/u013818406/article/details/143292422

相关文章

  • Micropython PICO 随记-使用PIO驱动Syn6288
    开发环境MCU:Pico1(无wifi版)传感器模块:Syn6288使用固件:自编译版本开发环境:MacBookProSonoma14.5开发工具:Thonny4.1.6开发语言:MicroPython1.20.0资料学习StateMachineApi参考官方代码UART通讯协议Syn6288手册代码使用创建两个StateMachine,分别用于发送待......
  • Python Note
    PythonNotectrl+c强制终端程序alt+p重复调出上个语句BIF(Buid-inFunctions)是Python的内置函数,为了方便程序员快捷编写脚本程序。len(dir(builtins)):158python3.12.5内置函数有158个收集参数:*args和**kwargs的理解打包(pack):*args是把多个位置参数打包成元组,**kw......
  • python: print table
    #encoding:utf-8#版权所有2024©涂聚文有限公司#许可信息查看:#描述:#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python3.11#OS:windows10#Datetime:2024/10/1216:08#User:geovindu#Product:PyCharm#......
  • Python xlrd库介绍
    一、简介     xlrd是一个用于读取Excel文件(.xls和.xlsx格式)的Python库。它提供了一系列函数来访问Excel文件中的数据,如读取工作表、单元格的值等。二、安装    可以使用以下命令安装xlrd库:pipinstallxlrd三、使用方法1. 导入库:示例:importxlrd2.......
  • 为什么要生成python项目需要的最小requirements.txt文件?
    在开发Python项目时,你是否曾面临过依赖管理的困扰?随着项目的复杂性增加,如何有效地管理和共享依赖成为了一项关键任务。今天,我们就来探讨为什么生成Python项目需要的最小requirements.txt文件至关重要。那么,为什么每个Python项目都需要一个requirements.txt文件?它对项目的开发......
  • 基于YOLOv8深度学习的吸烟/抽烟行为检测系统【python源码+Pyqt5界面+数据集+训练代码
    背景及意义吸烟行为检测对于维护公共场所的健康环境、防止火灾事故的发生以及促进健康生活方式都具有重要作用。使用基于YOLOv8的吸烟行为检测系统能够有效识别视频中的吸烟行为,从而及时采取适当措施。本文基于YOLOv8深度学习框架,通过2357张图片,训练了一个进行吸烟行为的......
  • 基于YOLOv10/YOLOv9/YOLOv8深度学习的工业螺栓螺母检测系统【python源码+Pyqt5界面+数
    背景及意义工业螺栓螺母检测系统的实施显著提高了制造行业的产品质量和工作效率。该系统的应用涵盖了从生产、检查到包装等各个环节,为精密设备的维护和安全运行提供了强大的技术支持。本文基于YOLOv10/YOLOv9/YOLOv8深度学习框架,通过2548张工业螺栓螺母的相关图片,训练了可......
  • 基于YOLOv10/v9/v8深度学习的金属焊缝缺陷检测系统【python源码+Pyqt5界面+数据集+训
    背景及意义金属焊缝缺陷检测系统的实现显著提高了众多工业领域产品的安全性和可靠性。自动化的检测过程不仅增加了工作效率,还降低了人力成本和事故风险。本文基于YOLOv10/v9/v8深度学习框架,通过3170张金属焊缝缺陷的相关图片,训练了可进行焊缝缺陷目标检测的模型,可以分别......
  • 基于YOLOv8深度学习的人脸面部口罩检测系统【python源码+Pyqt5界面+数据集+训练代码】
    背景及意义人脸口罩面部检测能够准确地检测人脸是否佩戴口罩,对于控制疫情传播、保障公共卫生安全起到关键作用。本文基于YOLOv8深度学习框架,通过853张图片,训练了一个进行人脸面部口罩的目标检测模型,能够准确的检测人脸“戴口罩”、“未戴口罩”及“未正确佩戴口罩”。并基......
  • 【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)
    ......