Skip to content

2. Python 项目开发工具

1. 常见工具

2. 工程化工具

2.1 代码格式化

推荐全局安装 pipx 工具:

bash
pip install pipx

项目如果使用了 blackisort 工具,建议使用 pre-commit 工具来管理,请参考下文。

Black 忽略文件

如果是 Qt 项目,则生成资源脚本(如 resources_rc.py)可能非常大,而 black 在大文件上的处理速度非常慢,可能导致程序假死。此时建议只用 Ruff 来格式化,或者在 black 中指定跳过格式化的文件,如:

bash
black . --extend-exclude resources_rc.py

注意不要使用 --exclude 参数,因为这个参数不使用默认的排除列表,可能导致整个虚拟环境文件夹被格式化。

2.2 pre-commit Git 钩子

pre-commit 是一个用于管理 Git 钩子的工具,可以在提交代码前自动运行代码格式化、代码检查等工具。

推荐使用 pipx 安装 pre-commit

bash
pipx install pre-commit

使用 pre-commit 很简单,只需要在项目根目录下创建 .pre-commit-config.yaml 文件:

yaml
fail_fast: false

exclude: |
  (?x)^(
    .vscode/.*|
    uv.lock
  )$
repos:
  - repo: https://github.com/abravalheri/validate-pyproject
    rev: v0.22
    hooks:
      - id: validate-pyproject
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v5.0.0
    hooks:
      - id: check-added-large-files
      - id: check-builtin-literals
      - id: check-case-conflict
      - id: check-docstring-first
      - id: check-executables-have-shebangs
      - id: check-json
      - id: check-merge-conflict
      - id: check-toml
      - id: check-yaml
      - id: detect-private-key
      - id: end-of-file-fixer
      - id: mixed-line-ending
        args: [--fix=lf]
      - id: trailing-whitespace
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.7.1
    hooks:
      - id: ruff
        args: [--fix]
      - id: ruff-format

在项目根目录下执行:

bash
pre-commit install

现在,每次提交代码时,pre-commit 将会自动运行配置的钩子。

忽略文件

注意 exclude 字段中需要添加项目中所有需要忽略的文件,使用正则表达式匹配。

现在可以手动运行测试:

bash
pre-commit run --all-files

自动更新规范版本:

bash
pre-commit autoupdate