解决ruff(flake8)报E402 Module level import not at top of file的问题

- demo.py

import os
import sys
from contextlib import contextmanager
from pathlib import Path

import yaml
from tqdm import tqdm

FILE = Path(__file__).resolve()
ROOT = FILE.parents[3]  # YOLOv5 root directory
if str(ROOT) not in sys.path:
    sys.path.append(str(ROOT))  # add ROOT to PATH

from utils.dataloaders import LoadImagesAndLabels, img2label_paths
from utils.general import LOGGER, check_dataset, check_file

try:
    import wandb

    assert hasattr(wandb, "__version__")  # verify package import not local dir
except (ImportError, AssertionError):
    wandb = None

print(os, sys, contextmanager, yaml, tqdm, LoadImagesAndLabels, img2label_paths, LOGGER, check_dataset, check_file, wandb)

执行命令:ruff check demo.py

报错如下:

demo.py:14:1: E402 Module level import not at top of file
   |
12 |     sys.path.append(str(ROOT))  # add ROOT to PATH
13 |
14 | from utils.dataloaders import LoadImagesAndLabels, img2label_paths
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E402
15 | from utils.general import LOGGER, check_dataset, check_file
   |

demo.py:15:1: E402 Module level import not at top of file
   |
14 | from utils.dataloaders import LoadImagesAndLabels, img2label_paths
15 | from utils.general import LOGGER, check_dataset, check_file
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E402
16 |
17 | try:
   |

Found 2 errors.

解决:把后面的import放到suppress里

import os
import sys
from contextlib import contextmanager, suppress
from pathlib import Path

import yaml
from tqdm import tqdm

FILE = Path(__file__).resolve()
ROOT = FILE.parents[3]  # YOLOv5 root directory
if str(ROOT) not in sys.path:
    sys.path.append(str(ROOT))  # add ROOT to PATH

with suppress(FutureWarning):
    from utils.dataloaders import LoadImagesAndLabels, img2label_paths
    from utils.general import LOGGER, check_dataset, check_file

try:
    import wandb

    assert hasattr(wandb, "__version__")  # verify package import not local dir
except (ImportError, AssertionError):
    wandb = None

print(os, sys, contextmanager, yaml, tqdm, LoadImagesAndLabels, img2label_paths, LOGGER, check_dataset, check_file, wandb)

前后版本对比如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值