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

时间:2010-03-29 18:12:07

标签: python

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

我的所有输入都是明确的,我通常不会写from blah import *

12 个答案:

答案 0 :(得分:38)

PyFlakes(类似于Lint)会向您提供此信息。

pyflakes python_archive.py

Example output:
python_archive.py:1: 'python_archive2.SomeClass' imported but unused

答案 1 :(得分:8)

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

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

答案 2 :(得分:6)

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

答案 3 :(得分:4)

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

我最近找到autoflake

  • 使用pyflakes进行检查。
  • 默认删除未使用的标准库导入和冗余func saveContext () { if managedObjectContext.hasChanges { do { try managedObjectContext.save() } catch { //insert your standard error alert stuff here let nserror = error as NSError print("From the print line: Unresolved error \(nserror), \(nserror.userInfo)") abort() }//do catch }//if moc }//saveContext 语句。
  • 具有删除其他未使用的导入和未使用变量的选项。

答案 4 :(得分:3)

如果您将eclipse IDE与pydevmylyn一起使用,它会为未使用的导入提供自动检查和突出显示等功能。它也与pylint集成。

答案 5 :(得分:2)

从2020年开始,建议使用vulture

安装

pip install vulture  # from PyPI

用法

vulture myscript.py

用于项目下的所有python文件。

find . -name "*.py" | xargs vulture | grep "unused import"

示例

适用于以下代码。

import numpy as np
import pandas as pd

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

结果如下。

➜ vulture myscript.py
myscript.py:1: unused import 'np' (90% confidence)
myscript.py:4: unused variable 'df' (60% confidence)

答案 6 :(得分:1)

autoflakepyflakes的改进版本,带有其他选项。 它在引擎盖下使用pyflakes,我建议您使用它而不是直接使用pyflakes。

答案 7 :(得分:0)

您可以使用以下用户设置

"python.linting.pylintEnabled": true,
"python.linting.pylintArgs": [
    "--enable=W0614"
]

但是我认为,您需要亲自浏览所有文件并点击“保存”。

答案 8 :(得分:0)

我同意使用PyFlakes。就像棉绒一样,但不包括样式错误。

更新

运行方式:pyflakes <your python file>pyflakes <your folder containing python files>

请小心!

如果仅使用命令pyflakes运行它,那将花费很长时间,因为它永无休止。我的假设是它试图以这种方式检查计算机/文件夹中的每个python文件。

答案 9 :(得分:0)

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

检查:在flake8 vs pyflake

查看更多信息
pip install flake8 --user
flake8 .

重新格式化:请参见why isort+autoflake

pip install isort autoflake --user
isort -rc -sl .
autoflake --remove-all-unused-imports -i -r .
isort -rc -m 3 .

答案 10 :(得分:0)

Importchecker是一个命令行实用程序,用于在Python模块中查找未使用的导入。

答案 11 :(得分:0)

您可以轻松地使用 pycln 来做到这一点,只需:

pip3 install pycln
pycln path_of_your_file.py -a

然后所有未使用的导入将被删除!