Pants集成isort时误将自研Python模块识别为第三方模块的问题
解决Pants项目中isort将自研模块识别为第三方模块的问题
核心原因
isort通过known_first_party配置项区分自研(第一方)模块和第三方模块,你当前的.isort.cfg仅配置了helloworld,新增的allthing不在该列表内,因此会被isort归为第三方模块。即便Pants配置了源码根,isort自身的该配置优先级更高,不会自动识别未声明的自研模块。
解决方案
方案1:直接更新.isort.cfg的known_first_party
打开项目根目录下的.isort.cfg,将allthing加入known_first_party列表:
[isort] known_first_party=helloworld,allthing # 保留原配置的其他项
修改后执行pants fmt ::,allthing的导入就会和helloworld归为同一类。
方案2:通过Pants配置统一管理(更通用)
如果后续还会新增自研模块,不想每次修改.isort.cfg,可以在pants.toml中添加isort配置,开启自动检测第一方模块:
[isort] # 自动识别Pants源码根下的所有模块 auto_detect_first_party = true # 也可手动指定所有第一方模块,效果与.isort.cfg一致 # known_first_party = ["helloworld", "allthing"]
注意:开启auto_detect_first_party时,需确保Pants的源码根配置正确。可通过pants roots命令确认当前源码根是否指向project1/src,若未指向,需调整pants.toml中的[source]配置:
[source] root_patterns = ["project1/src"]
验证方法
执行pants fmt ::后查看代码导入排序,或用pants lint --debug ::查看isort实际接收的配置参数,确认known_first_party是否包含allthing。
内容的提问来源于stack exchange,提问作者chadrik
相关产品推荐
相关产品推荐

