我真的很想知道是否有一些扩展在Visual Studio代码或其他手段,可以帮助识别和删除任何未使用的导入。
我有很多这样的导入文件,已经接近40行了。我知道有些文件没有被使用,问题是如何安全地删除它们。
from django.core.mail import EmailMultiAlternatives, send_mail
from django.template.loader import render_to_string
from django.utils.html import strip_tags
from rest_framework import routers, serializers, viewsets, status
from rest_framework.views import APIView
from rest_framework.response import Response
from django.contrib.auth.models import User
9条答案
按热度按时间ktca8awb1#
转到***用户设置***json文件并添加以下内容:
这应该会自动删除未使用的python导入。
更多建议:How can I check for unused import in many Python files?
ix0qys7i2#
有趣的是,公认的答案并没有解决这个问题--如何删除未使用的导入。
Pylint并不修改代码,它只做去屑。
诚然,我还没有为python找到一个很好的解决方案,但以下是我所看到的:
1.
如this answer中所述,VSCode有一个基本的内置选项来自动组织导入,但对我来说效果不是很好-您的里程可能会有所不同:
选项+Shift + O(适用于Mac)
Alt + Shift + O
如果这对您有用,您也可以在VSCodes设置中使用以下命令进行保存:
2.
一个名为autoflake的模块可以做到这一点,例如:
但同样,里程可能会有所不同。
备注
我看到一个issue logged in the vscode github注意到"快速修复"功能被破坏了,vscode团队表示这是vscode python插件的问题。可能很快就会修复。
nafvub8i3#
autoflake vscode extension删除未使用的导入(而不是仅仅突出显示它们或对它们进行排序)。
该怎么做:
1.安装autoflake python package,例如通过
pip install autoflake
(这将由扩展使用)。1.通过vscode中的扩展选项卡安装autoflake vscode extension。
1.(* 可选 *:保存时运行autoflake)安装Save and Run Ext vscode扩展并将这些设置添加到
settings.json
:bhmjp9jg4#
您可以自己创建这样的VSCode Task。
1.安装自动薄片
2.创建Vscode任务
选项1.不使用
activate
选项2.使用
activate
上述方法(将autoflake作为模块运行)至少可以在Windows上运行(在PowerShell和命令提示符、Git Bash下运行),也可以在其他操作系统或环境下运行(我不知道,因为我没有,请编辑)。
PowerShell
命令提示符
巴什
在Bash中,文件路径似乎必须用引号括起来。
3.将任务添加到键盘快捷键(可选)
Preferences: Open Keyboard Shortcuts (JSON)
。这样,按下快捷键将自动删除未使用的导入。
不幸的是,由于某种原因,
vscode-autoflake
在我的环境中不起作用。rsaldnfx5#
我建议添加
pycln
作为预提交钩子,它是为这个任务设计的!(It仅适用于Python 3.6+)。
文件:https://hadialqattan.github.io/pycln
回购:https://github.com/hadialqattan/pycln
PyPI:https://pypi.org/project/pycln/
bogh5gae6#
目前还没有明确的方法在VSCode上执行此操作,但您可以轻松地使用**pycln**来执行此操作,只需执行以下操作:
然后所有未使用的导入将被删除!
piztneat7#
现在pylance扩展的新版本中就有了这个功能(我想大多数在VS代码中使用python的人都会有)。
需要注意的是,带有
ctrl + alt/option + o
键绑定的optimizeImports
只对未使用的导入进行排序,而不会删除未使用的导入(参见github issue)。我有自动保存功能,所以我更喜欢键盘快捷键。如果你有pylance扩展,你可以在keybindings.json中添加以下代码
你可以改变键绑定为任何你想要的,但基本上当你按下键绑定(即
shift + option/alt + r
),它应该删除所有未使用的导入。我相信如果你想自动保存为上述你可以添加以下到您的settings.json:
owfi6suc8#
使用这个最近创建的VSCode扩展,autoflake可以通过单击Explorer(在VSCode中)选项卡的上下文菜单或从命令面板调用命令来自动运行,以删除未使用的导入。
https://marketplace.visualstudio.com/items?itemName=mikoz.autoflake-extension
(As我之前的答案不知怎么被版主删除了,我现在发布一个新的,哈哈。)
qlvxas9a9#
我知道这充其量只是一种变通办法,但如果您想要这个功能,Pycharm和IntelliJ可以使用优化导入热键(MacOS上的ctrl + opt + o)自动完成。