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

指定known_first_party和src_path后Isort仍误将自有模块归为第三方导入

解决Isort将同目录Python模块误判为第三方导入的问题

问题场景

项目目录结构:

.
└── Home/
    └── project/
        ├── data/
        │   ├── dataset.py
        │   └── data_utils.py
        ├── src/
        │   └── main.py
        ├── .pre-commit-config.yaml
        └── .isort.cfg

通过.env设置PYTHONPATH:PYTHONPATH="$(pwd):$(pwd)/src:$(pwd)/data",方便data目录内模块互相导入。但在data_utils.py中使用from dataset import Dataset时,Isort始终将该导入归为第三方导入分组,尝试以下配置均无效:

  • known_first_party=data_utils
  • 同时设置known_first_party=data_utils和src_paths=data

解决方案

1. 修正.isort.cfg配置

Isort需要明确识别整个data目录为第一方源码目录,而非单个模块。修改.isort.cfg为:

[settings]
# 指定项目根目录为源码路径,自动识别所有子目录模块
src_paths = .
# 显式声明第一方模块目录,配合src_paths使用更稳妥
known_first_party = data, src

其中src_paths = .表示以project/目录为源码根,Isort会自动识别该目录下所有子目录中的模块为第一方。

2. 确保pre-commit钩子读取正确的PYTHONPATH

pre-commit的钩子运行在独立环境中,可能无法读取你通过dotenv加载的环境变量。直接在.pre-commit-config.yaml的Isort钩子中配置PYTHONPATH:

repos:
-   repo: https://github.com/PyCQA/isort
    rev: 5.12.0  # 替换为你当前依赖的Isort版本
    hooks:
    -   id: isort
        env:
            PYTHONPATH: "."

3. 验证效果

修改配置后,执行以下命令重新运行pre-commit钩子:

pre-commit run isort --all-files

此时from dataset import Dataset应该会被正确归类到第一方导入分组中。

内容的提问来源于stack exchange,提问作者Sean

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:47:10