有没有一种方法可以删除VS Code中未使用的Python导入文件?

时间:2018-11-17 14:27:01

标签: python visual-studio-code

我真的很想知道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

6 个答案:

答案 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

回购:https://github.com/hadialqattan/pycln

PyPI:https://pypi.org/project/pycln/

答案 2 :(得分:2)

目前在 VSCode 上没有明确的方法可以做到这一点,但是您可以轻松地使用 pycln 来做到这一点,只需:

pip3 install pycln
pycln path_of_your_file.py -a

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

答案 3 :(得分:0)

有趣的是,接受的答案没有解决问题-如何删除未使用的进口商品。

Pylint不会修改代码,而是会掉毛。

诚然, i 仍然没有找到适用于python的出色解决方案,但这是我所看到的:

1。

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);
    
    ...

2。

名为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 删除未使用的导入(而不仅仅是突出显示它们或对它们进行排序)。

做什么:

  1. 安装 autoflake python package 例如通过 pip install autoflake(这将由扩展程序使用)。
  2. 通过 vscode 中的扩展选项卡安装 autoflake vscode extension
  3. 可选:保存时运行 autoflake)安装 Save and Run vscode 扩展并将这些设置添加到 settings.json
{
    "saveAndRunExt": {
        "commands": [
            {
                "match": ".*\\.py",
                "isShellCommand": false,
                "cmd": "autoflake.removeUnused"
            },
        ]
    },
}