我真的很想知道Visual Studio Code中是否有一些Extension或其他手段可以帮助识别和删除任何未使用的导入。
我有很多这样的进口商品,并且已经接近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
答案 0 :(得分:5)
转到 用户设置 json文件并添加以下内容:
"python.linting.pylintEnabled": true,
"python.linting.pylintArgs": [
"--enable=W0614"
]
这应该自动删除未使用的python导入。
更多建议在这里: How can I check for unused import in many Python files?
答案 1 :(得分:2)
我建议添加pycln
作为预提交的钩子,此钩子是为此任务设计的!
(仅适用于Python 3.6 +)。
文档:https://hadialqattan.github.io/pycln
答案 2 :(得分:2)
目前在 VSCode 上没有明确的方法可以做到这一点,但是您可以轻松地使用 pycln 来做到这一点,只需:
pip3 install pycln
pycln path_of_your_file.py -a
然后所有未使用的导入将被删除!
答案 3 :(得分:0)
有趣的是,接受的答案没有解决问题-如何删除未使用的进口商品。
Pylint不会修改代码,而是会掉毛。
诚然, i 仍然没有找到适用于python的出色解决方案,但这是我所看到的:
如this answer中所述,VSCode具有一个基本的内置选项来自动组织导入,对我而言效果不佳-您的里程可能会有所不同:
选项 + Shift + O (对于Mac)
Alt + Shift + O
如果这对您有用,那么您还可以使用以下方法在VSCodes设置中保存时做到这一点:
[Obsolete("This is obsolete and will be removed in a future version. Use Microsoft.Identity.Web instead. See https://aka.ms/ms-identity-web.")]
public static class AzureADAuthenticationBuilderExtensions
{
/// <summary>
/// Adds JWT Bearer authentication to your app for Azure Active Directory Applications.
/// </summary>
/// <param name="builder">The <see cref="AuthenticationBuilder"/>.</param>
/// <param name="configureOptions">The <see cref="Action{AzureADOptions}"/> to configure the
/// <see cref="AzureADOptions"/>.
/// </param>
/// <returns>The <see cref="AuthenticationBuilder"/>.</returns>
[Obsolete("This is obsolete and will be removed in a future version. Use AddMicrosoftWebApiAuthentication from Microsoft.Identity.Web instead. See https://aka.ms/ms-identity-web.")]
public static AuthenticationBuilder AddAzureADBearer(this AuthenticationBuilder builder, Action<AzureADOptions> configureOptions) =>
builder.AddAzureADBearer(
AzureADDefaults.BearerAuthenticationScheme,
AzureADDefaults.JwtBearerAuthenticationScheme,
configureOptions);
...
名为autoflake的模块可以执行此操作,例如:
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
但同样,里程可能会有所不同。
我看到issue logged in the vscode github指出“快速修复”功能已损坏,vscode团队表示这是vscode python插件的问题。.可能很快会解决..?
答案 4 :(得分:0)
我认为这充其量只是一种解决方法,但是如果您想要此功能,Pycharm 和 IntelliJ 会使用优化导入热键 (ctrl + opt + < kbd>o 在 MacOS 上)。
答案 5 :(得分:0)
autoflake vscode extension 删除未使用的导入(而不仅仅是突出显示它们或对它们进行排序)。
pip install autoflake
(这将由扩展程序使用)。settings.json
:{
"saveAndRunExt": {
"commands": [
{
"match": ".*\\.py",
"isShellCommand": false,
"cmd": "autoflake.removeUnused"
},
]
},
}