You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于isort在目录从test重命名为tests后导入排序差异的咨询

关于isort在目录从test重命名为tests后导入排序差异的咨询

嗨,这个问题我之前踩过坑,其实核心原因和isort的导入分组规则,以及Python标准库的命名冲突有关!

先给你理清楚isort默认的导入排序逻辑,它会把导入分成几个优先级组,顺序大概是:

  • 未来语句导入(比如from __future__ import print_function)
  • Python标准库自带的模块/包导入
  • 第三方库导入(像你用pip安装的numpy这类)
  • 你自己项目内部的第一方模块/包导入

再对应看你的两种场景:

  1. a目录下的test包场景:
    Python标准库本身就有一个名为test的内置包(是Python官方测试套件的一部分),isort默认会把名为test的导入识别成标准库导入。而numpy属于第三方库,按照优先级,标准库导入要排在第三方库前面,所以from test.asdasd import hello就被放在了import numpy as np的上面。

  2. b目录下的tests包场景:
    tests这个名字并不是Python标准库中的模块/包,isort会自动检测出这是你自己项目里的第一方导入,按照规则,第一方导入的优先级低于第三方库,所以from tests.asdasd import hello就被排在了import numpy as np的下面。

如果想让isort把你的test包识别成项目内部的第一方导入,和tests保持一致的排序,可以在项目根目录创建一个.isort.cfg配置文件,内容如下:

[settings]
known_first_party = test

这样isort就会把test相关的导入归到第一方组里,排序就会和tests的情况一样,排在numpy后面了。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 09:49:33