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

78 投票
12 回答
68459 浏览
提问于 2025-04-15 21:00

我记得在用C++或Java开发的时候,编译器通常会对那些没用到的方法、函数或者导入的库发出警告。在我的Django项目中,有很多Python文件经历了多次修改。有些文件在顶部有几行导入语句,但有些导入的库现在已经不再用了。有没有什么办法可以找到这些没用的导入,而不是一个一个地去看每个文件呢?

我所有的导入都是明确的,我一般不会写from blah import *这种形式。

12 个回答

16

可以使用像 pylint 这样的工具,它能帮你发现代码中的问题(还有很多其他问题)。

在动态类型的编程语言中,进行这种“运行前”的检查比较困难,但 pylint 在发现这些拼写错误或者重构后留下的代码问题方面做得非常出色。

18

我使用 flake8 来检查代码的风格,然后用 isortautoflake 自动删除那些没用的导入。

检查:想了解更多,可以看看 flake8 和 pyflake 的对比

pip install flake8 --user
flake8 .

重新格式化:想了解更多,可以查看 为什么用 isort 和 autoflake

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

最近(从2023年开始),我开始用 ruff 来替代 autoflake/flake8

pip install --upgrade --user ruff
ruff --fix /path/to/file_or_folder
72

PyFlakes(类似于Lint)可以为你提供这些信息。

pyflakes python_archive.py

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

撰写回答