isort工具第一方导入识别异常:根目录pyproject.toml配置无效求助
解决isort误将同目录模块识别为第三方导入的问题
项目目录结构
Project_Name |-project_name |--__init__.py |--file1.py |--file2.py |--main.py |-tests |-docs |-pyproject.toml
问题描述
我的isort配置文件放在根目录Project_Name/pyproject.toml,所有Python文件都在子目录Project_Name/project_name/下。在main.py里用以下导入语句时:
from file1 import xyz from file2 import abc
isort会把file1、file2归类为第三方导入,而非同一项目的第一方导入。把pyproject.toml移到project_name目录下就能正常识别,但我想保留配置文件在根目录,之前试过在配置里加known_first_party = ['project_name']没用,请问该怎么处理?
当前pyproject.toml内容:
[tool.isort] line_length = 120 use_parentheses = true multi_line_output = 3 ensure_newline_before_comments = true include_trailing_comma = true split_on_trailing_comma = true float_to_top = true indented_import_headings = false known_future_library = ['__future__', 'config'] extra_standard_library = [] known_third_party = [] known_mylib = ['my_utils_library'] known_first_party = [] known_local_folder = []
解决方案
有两种可行的解决方式:
方式1:改用绝对导入
把main.py里的导入语句改成从项目包名开始的绝对导入:
from project_name.file1 import xyz from project_name.file2 import abc
同时在pyproject.toml里确保known_first_party配置正确:
known_first_party = ['project_name']
这样isort就能正确识别这些导入属于第一方。
方式2:配置known_local_folder参数
如果不想修改现有导入语句,直接在pyproject.toml里把project_name目录加入known_local_folder:
known_local_folder = ['project_name']
这个参数会让isort把指定目录下的模块视为本地(第一方)导入,适配你当前的相对导入写法。
额外注意:确保项目根目录Project_Name已经加入Python路径(sys.path),可以通过pip install -e .安装可编辑模式的项目,或者手动添加路径,否则isort可能无法正确解析模块归属。
内容的提问来源于stack exchange,提问作者64rl0
相关产品推荐
相关产品推荐

