如何使用Ruff规则强制统一Python datetime模块的指定导入风格
如何使用Ruff规则强制统一Python datetime模块的指定导入风格
我之前在代码库里踩过datetime导入的大坑——有的地方写import datetime,有的地方又用from datetime import datetime,看代码的时候经常搞不清眼前的datetime是整个模块还是那个核心类,太容易出bug了!后来我干脆把全库的导入统一改成了这种风格:
import datetime as dt
一眼就能明确dt指代的是整个模块,用起来再也不迷糊。
要让Ruff帮我们强制守住这个导入规则其实不难,不用纠结tidy-imports,用Ruff自带的集成规则就能搞定,亲测有效:
具体配置步骤
1. 用isort集成规则指定强制别名
Ruff内置了isort的功能,我们可以在项目的配置文件(比如pyproject.toml或者ruff.toml)里直接指定datetime必须用dt作为别名:
[tool.ruff.isort] # 这里替换成你的项目名,如果是第三方库可以留空 known-first-party = ["your_project_name"] # 强制datetime模块使用dt作为别名 force-alias = { "datetime": "dt" }
同时要确保开启了I001规则(isort的基础检查规则),它会帮你自动调整导入格式。
2. 彻底禁用其他导入方式
为了杜绝import datetime或者from datetime import datetime这类不符合要求的写法,我们可以启用Ruff的flake8-import-conventions规则(规则码ICN001),在配置里补充:
[tool.ruff.lint] # 导入ICN规则组,同时保留isort的I组规则 select = ["ICN", "I"] [tool.ruff.lint.flake8-import-conventions] # 明确规定datetime模块只允许"import datetime as dt"这一种导入形式 imports = { "datetime": { "allowed-forms": ["import {module} as dt"] } }
验证与修复
配置好之后,运行下面的命令检查代码:
ruff check your_code_path/
如果有不符合规则的导入,Ruff会给出清晰的错误提示。要是想一键修复所有不符合的导入,只需要加上--fix参数:
ruff check your_code_path/ --fix
这样整个代码库的datetime导入风格就能自动统一成我们想要的样子了。
备注:内容来源于stack exchange,提问作者MichielB
相关产品推荐
相关产品推荐

