如何在许多Python文件中检查未使用的导入?

Thi*_*Lam 43 python

我记得当我用C++或Java开发时,编译器通常会抱怨未使用的方法,函数或导入.在我的Django项目中,我有一堆Python文件经过了多次迭代.其中一些文件在页面顶部有几行import语句,其中一些导入不再使用.有没有办法找到那些未使用的进口,除了每个文件中的每一个眼球?

我的所有进口都是明确的,我通常不写 from blah import *

dou*_*oug 42

PyFlakes(类似于Lint)将为您提供此信息.


Wak*_*eng 17

我用来flake8检查样式,然后isort+autoflake自动删除未使用的导入。

检查:查看更多flake8 vs pyflake

pip install flake8 --user
flake8 .
Run Code Online (Sandbox Code Playgroud)

重新格式化:详细了解为什么使用 isort+autoflake

pip install isort autoflake --user
isort -sl .
autoflake --remove-all-unused-imports -i -r .
isort -m 3 .
Run Code Online (Sandbox Code Playgroud)

最近(自2023年起),我用ruff来代替autoflake/flake8

pip install flake8 --user
flake8 .
Run Code Online (Sandbox Code Playgroud)


Chr*_*heD 8

使用像pylint这样的工具来表示这些代码缺陷(在很多其他代码中).

在使用动态类型的语言中进行这些"运行前"检查很难,但是pylint在从重构等中捕获这些拼写错误/遗留事件方面做得非常好...

  • 你应该注意确切的命令(例如`pylint*| grep"unused-import"`) (7认同)

Fel*_*ing 6

看看PyChecker.它是一个调试工具,能够找到未使用的变量和模块.


Kei*_*iku 6

您也可以将秃鹫视为多种选择之一。

安装

pip install vulture  # from PyPI
Run Code Online (Sandbox Code Playgroud)

用法

vulture myscript.py
Run Code Online (Sandbox Code Playgroud)

对于您项目下的所有 python 文件。

find . -name "*.py" | xargs vulture | grep "unused import"
Run Code Online (Sandbox Code Playgroud)

例子

适用于以下代码。

import numpy as np
import pandas as pd

df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
Run Code Online (Sandbox Code Playgroud)

结果如下。

? vulture myscript.py
myscript.py:1: unused import 'np' (90% confidence)
myscript.py:4: unused variable 'df' (60% confidence)
Run Code Online (Sandbox Code Playgroud)


Pau*_*son 5

我一直在成功使用pyflakes,并希望自动删除未使用的导入。

我最近发现了autoflake

  • 使用pyflakes进行检查。
  • 默认删除未使用的标准库导入和冗余pass语句。
  • 具有删除其他未使用的导入和未使用的变量的选项。