我记得当我使用C ++或Java开发时,编译器通常会抱怨未使用的方法,函数或导入。在我的Django项目中,我有一堆Python文件经过了多次迭代。其中一些文件在页面顶部有几行import语句,其中一些导入不再使用。有没有办法找到那些未使用的进口,除了每个文件中的每一个都有眼球?
我的所有输入都是明确的,我通常不会写from blah import *
答案 0 :(得分:38)
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:
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)
答案 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)
答案 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
自动删除未使用的导入。
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)