
在使用isort工具进行python导入语句的排序和格式化时,开发者常常希望其行为能够智能地适应代码风格,例如仅在导入语句的行长度超出预设阈值时才将其拆分为多行。然而,默认或某些配置下,isort可能会不分青红皂白地将所有符合特定模式的导入语句格式化为多行,即便它们完全可以保持在单行内,这可能与项目的代码风格指南相悖,并导致不必要的代码变动。
例如,以下导入语句:
import pandas as pd from tableau_api_lib.utils.querying import get_datasources_dataframe, get_workbooks_dataframe
在某些isort配置下,可能会被自动格式化为:
import pandas as pd
from tableau_api_lib.utils.querying import (
get_datasources_dataframe,
get_workbooks_dataframe,
)而我们期望的行为是,只有当第二行导入语句的字符长度超过120个字符时,才将其拆分为多行。
要实现这种精细化的控制,核心在于isort的配置。推荐使用项目根目录下的pyproject.toml文件进行配置,这样可以确保整个项目团队和CI/CD流程使用一致的格式化规则。
在pyproject.toml文件中,添加或修改[tool.isort]部分,具体配置如下:
[tool.isort] line_length = 120 multi_line_output = 3 include_trailing_comma = true force_grid_wrap = 0 use_parentheses = true ensure_newline_before_comments = true
各项配置的解释:
通过上述配置,isort将优先尝试保持导入语句在单行,只有当行长超过120字符时,才会将其拆分为使用括号包裹的垂直悬挂缩进样式。
为了让VSCode编辑器在保存时自动应用上述isort配置,需要调整VSCode的settings.json。关键在于确保VSCode的isort扩展能够正确读取项目的pyproject.toml配置,而不是被VSCode自身的isort.args设置覆盖。
修改settings.json如下:
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "ms-python.python", // 可以是ms-python.black-formatter或其他,但确保Python扩展能够处理isort
"[python]": {
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
// 移除或注释掉isort.args,让isort读取pyproject.toml
// "isort.args": ["--line-length", "120", "--profile", "black"]
}关键点说明:
通过上述配置,您可以实现对Python导入语句格式化行为的精确控制,确保代码风格的一致性,并在保持代码整洁的同时,避免不必要的格式化变动。这种基于项目配置的方法也使得团队协作更加高效,因为所有成员都遵循相同的格式化规则。
以上就是精细控制isort导入格式:在VSCode中实现按行长自动换行的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号