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

如何修复Flake8 isort的I001导入位置错误?

解决flake8 I001导入位置错误及isort无响应问题

问题分析

你的flake8报错I001 isort found an import in the wrong position,指向from api_yamdb.settings import DEFAULT_FROM_EMAIL这行。这是因为isort的导入分组规则要求:第三方库导入(如django、rest_framework)要放在项目自有代码导入的前面,而你把项目内部的settings导入插在了django等第三方库导入的中间,违反了排序规则。

运行isort命令无变化,大概率是配置不匹配、缓存或权限问题导致isort没有按flake8期望的规则执行。

快速解决:手动调整导入顺序

直接把这行settings导入移到所有第三方库导入的后面、项目自有代码导入的区域,调整后的完整导入片段如下:

# 第三方库导入(先放django、rest_framework等外部依赖)
from django.contrib.auth.tokens import default_token_generator
from django.core.mail import send_mail
from django.db.models import Avg
from django.shortcuts import get_object_or_404
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters, permissions, status, viewsets
from rest_framework.decorators import action, api_view, permission_classes
from rest_framework.response import Response
from rest_framework_simplejwt.tokens import AccessToken

# 项目自有代码导入(自己的app、项目配置等)
from api.v1.filters import TitleFilter
from api.v1.permissions import (AuthorAdminModeratorOrReadOnly, IsAdmin,
                                IsAdminOrReadOnly)
from api.v1.serializers import (CategorySerializer, CommentSerializer,
                                ConfirmationCodeSerializer, GenreSerializer,
                                ReviewSerializer, SignUpSerializer,
                                TitleReadSerializer, TitleWriteSerializer,
                                UserEditSerializer, UserSerializer)
from api_yamdb.settings import DEFAULT_FROM_EMAIL
from reviews.models import Category, Genre, Review, Title, User

# 本地相对导入(当前目录下的模块)
from .mixins import CreateDestroyViewSet

调整后再运行python -m flake8,I001错误应该会消失。

排查isort不工作的原因

如果想让isort自动处理,解决无响应的问题,可以尝试以下步骤:

  • 清除isort缓存
    运行命令清除缓存,强制isort重新分析文件:

    isort --clear-cache
    isort views.py
    
  • 统一isort与flake8-isort的配置
    检查项目根目录是否有isort配置文件(如.isort.cfg、pyproject.toml),确保其分组规则和flake8-isort的要求一致。比如在pyproject.toml中添加适配django项目的规则:

    [tool.isort]
    profile = "django"
    sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"]
    known_django = "django"
    known_rest_framework = "rest_framework"
    

    配置后再运行isort,应该会按规则自动排序。

  • 检查版本兼容性
    确保flake8-isort依赖的isort版本和你本地安装的isort版本一致。运行以下命令查看版本:

    pip show isort flake8-isort
    

    如果版本差异较大,尝试安装匹配的版本,比如:

    pip install isort==5.12.0 flake8-isort==6.0.0
    
  • 检查文件权限
    确认当前用户对views.py有写入权限,避免isort无法修改文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:16:23