现代化Python工具:uv、Ruff、Pyright、Rich(只讲重点版)

课程视频:【Python/uv】迈向AI的第零步!现代化Python工具指南_哔哩哔哩_bilibili

github仓库:GitHub - Wood-Q/ModernPython: 现代化python入门教程 · GitHub

notion笔记:https://mirage-thought-d06.notion.site/Python现代化工具


基础:ide(代码编辑器)

VSCode


底层:uv(快速Python包管理器)

解决Python的依赖管理,且能以极快的速度安装包(pip的高性能替代)

官方文档:uv

  • 把 C:\Users\11842\.local\bin 编辑到环境变量

  • 放进环境变量之后,每次打开一个PowerShell,它就会自动把 uv 加载进来

uv常用命令

python 复制代码
uv venv   # 创建虚拟环境 (它会默认创建在 .venv 目录)
.venv\Scripts\activate    # 激活虚拟环境(如果是 linux系统,则为 .venv/bin/activate)

bash 复制代码
uv venv my-env -p 3.11      # 指定环境名字和python版本
uv venv -p python@3.11      # 使用 python3.11 创建 .venv
# 仍需激活环境

uv init   # 初始化一个uv项目,会自动生成 main.py、pyproject.toml、README.md
uv pip install xxx   # 装包(放到全局缓存里),速度比pip快很多
uv add xxx   # 把安装包从全局缓存拉到具体项目里

uv add 之后,pyproject.toml 文件的 dependencies 列表里会自动加上对应的包和版本

bash 复制代码
uv sync   # 如果有拉取一个uv的项目(git clone xxx.git),直接sync即可配置好环境
uv pip freeze > requirements.txt   # 生成一个包含所有已安装包及其精确版本的列表,格式与 pip freeze 的输出相同,常用于生成 requirements.txt 文件
uv pip install -r requirements.txt   # 按照 requirements.txt 文件中列出的所有依赖包及其版本要求,批量安装 Python 库

pyproject.toml(配置文件)

安装下面这个插件,toml 文件就会语法高亮了

pyproject.toml 是一个统一的 Python 项目配置文件(静态的、声明性)

文件结构:

  • build-system:想让别人可以通过 pip install xxx 来下载我的包,才需要填这个,告诉 pip 如何构建这个包
  • project:这个表几乎涵盖了所有需要声明的项目信息
bash 复制代码
[project]
name = "my-package" # 项目名,发布到PyPI时使用
version = "0.1.0" # 项目版本
description = "A short description of my project." # 项目简短描述
readme = "README.md" # 指定README文件
requires-python = ">=3.9" # 要求的Python版本

# --- 核心依赖,即 install_requires ---
dependencies = [
  "httpx",
  "rich>=13.0.0",
  'tomli; python_version < "3.11"', # 可以包含环境标记
]
  • tool.\*:统一配置所有开发工具。每个工具都可以定义自己的配置表,以 tool.工具名 的形式存在
bash 复制代码
# --- ruff (linter/formatter) 的配置 ---
[tool.ruff]
line-length = 88 # 设置行长限制
target-version = "py311" # 设定目标Python版本以应用相应规则

[tool.ruff.lint]
# 选择要启用的规则集,E=pycodestyle错误, F=pyflakes, I=isort
select = ["E", "F", "I"] 
# 忽略特定的规则
ignore = ["E501"] 

和 conda 的区别


语法:Ruff(快速Python语法检查器)

作用:配置编写 Python 项目所需要遵循的语法规则

  • 安装插件(可进行语法提示):

  • 安装:

    uv tool install ruff

作用

限制一行的长度、自动移除没有使用但导入的包或变量、自动排序 import 语句,等等

常用操作

|---------------------|---------------------------------------|
| 任务 | 命令 |
| 格式化我的代码 | ruff format . |
| 检查代码问题并自动修复 | ruff check . --fix |
| 在 CI/CD 中验证格式 | ruff format . --check |
| 在 CI/CD 中检查代码质量 | ruff check . |
| 开发时实时检查 | ruff check . --watch |
| 搞不清某条规则是什么意思 | ruff rule <RULE_CODE> |
| 清理缓存 | ruff cache clean |
| 终极清理 | ruff format . && ruff check . --fix |

进阶配置

在 pyproject.toml 里配置:

  • 启用预览功能:Ruff 的许多强大功能(如类型感知 lint、更智能的自动修复)目前处于 preview 模式,需显式启用

    [tool.ruff]
    preview = true

或命令行启用:

bash 复制代码
ruff check --preview .
ruff format --preview .
  • 细粒度规则控制(Per-File / Per-Line )
bash 复制代码
# 忽略特定文件/目录
[tool.ruff.lint]
extend-exclude = [
  "migrations/",
  "legacy_code.py",
  "scripts/temp_*.py"
]

# 为特定文件启用/禁用规则
[[tool.ruff.lint.per-file-ignores]]
"tests/**.py" = ["S101", "D"]   # 忽略 asserts 和 docstring 规则
"scripts/*.py" = ["T20"]        # 忽略 print 警告

pyproject.toml 配置

lint.select 是规则集

  • E501是行长的规则,如 line-length=10(行长不能超过10)
  • exclude 表示以上规则忽略特定文件
  • format 里 single 单引号,double 双引号

最佳实践

  1. 统一使用 pyproject.toml 进行配置

    将 Ruff 的所有配置集中在 pyproject.toml[tool.ruff] 表中

  2. 明确目标 Python 版本 (target-version)

    bash 复制代码
    [tool.ruff]
    target-version = "py311"   # 明确项目使用的 Python 版本
  3. 从一个稳健的基础规则集开始

    不要一开始就想着启用所有规则。一个理智的起点是启用那些被广泛接受、能显著提升代码质量的核心规则集

    bash 复制代码
    [tool.ruff]
    # E: pycodestyle 错误, F: Pyflakes 逻辑错误, I: isort 导入排序, UP: pyupgrade 语法升级
    select = ["E", "F", "I", "UP"]
  4. 拥抱自动修复

    ruff check . --fix 作为常规操作。Ruff 的自动修复非常安全可靠,能处理掉大量琐碎的格式和代码问题


类型:Pyright(静态类型检查器)

集成在 VSCode 的 Pylance 插件里:

在设置里搜 Type Checking Mode,可以配置 Basic、Standard、Strict 三档(一般用 Basic 即可):


守门:pre-commit(git相关)

视频里没介绍,就略了,具体看 notion 笔记吧


美化:Rich(Python美化堆栈报错)

安装:

bash 复制代码
uv pip install rich

**如何美化堆栈报错?**在文件最前面写上:

python 复制代码
from rich.traceback import install

install()
相关推荐
Logintern091 小时前
DeepAgents 主-子 Agent 的底层实现逻辑完全基于 LangGraph 的图机制
python
码云骑士2 小时前
97-Milvus从零到生产-Standalone-vs-Cluster-索引选择-分片监控扩容
python·milvus
accept 99%2 小时前
python版提取 PDF 的常用第三方库与工具
开发语言·python·pdf
小猴子爱上树2 小时前
跨境图片翻译工具,批量处理商品图视频字幕
python·音视频
用户298698530142 小时前
HTML 转 Word 指南:新手入门教程
人工智能·后端·python
Livia要学习2 小时前
Python面向对象三大特性:封装、继承、多态
开发语言·python
Csvn2 小时前
🐍 Day1 : Python 环境搭建 — 现代 Python 工作流
后端·python
杨_晨2 小时前
LLM输出康熙部首冲突
数据库·python·mysql·ai
渣男教父2 小时前
Python-lxml 与 XPath 实战
python·编程语言