Visual Studio Code 中的 Pylint“未解析的导入”错误

2025-01-10 08:47:00
admin
原创
115
摘要:问题描述:我正在使用以下设置macOS v10.14(莫哈韦)Python 3.7.1Visual Studio Code 1.30Pylint 2.2.2Django 2.1.4我想使用 linting 来让我在 Visual Studio Code 中的生活更轻松一些。但是,对于我所做的每个导入,都显示“...

问题描述:

我正在使用以下设置

  • macOS v10.14(莫哈韦)

  • Python 3.7.1

  • Visual Studio Code 1.30

  • Pylint 2.2.2

  • Django 2.1.4

我想使用 linting 来让我在 Visual Studio Code 中的生活更轻松一些。但是,对于我所做的每个导入,都显示“未解析的导入”。即使是默认的 Django 导入(即从 django.db 导入模型)。

我推测这是因为它没有看到虚拟环境 Python 文件。

一切都运行良好,但它开始变得烦人了。

我所选择的解释器都是 Python 的系统版本。它似乎根本看不到我的虚拟环境 Python(它与我的工作区不在同一目录中,所以这一点是有道理的)。

如果我在settings.json文件中设置了python.PythonPath,它会忽略它,并且不会将我的虚拟环境路径列为选项。我也尝试在我的全局 Python 设置中设置它,但它也没有显示。

有没有什么快速解决办法可以使它正常工作?


解决方案 1:

接受的答案不会修复导入自己的模块时出现的错误。

在您的工作区设置中使用以下设置.vscode/settings.json

"python.autoComplete.extraPaths": ["./path-to-your-code"],

参考:故障排除,未解决的导入警告

2023 年更新

正如shmim所提到的,python-language-server 已被弃用,新的​​闭源 LSP Pylance 的设置配置如下:

"python.analysis.extraPaths": ["./path-to-your-code"]

解决方案 2:

在你的工作区设置中,你可以像这样设置你的 Python 路径:

{
    "python.defaultInterpreterPath": "/path/to/your/venv/bin/python",
}

解决方案 3:

替代方法:使用命令界面!

Cmd/ Ctrl++ → Python:选择解释器Shift→选择带有您要查找的包的解释器:P

在此处输入图片描述

解决方案 4:

此问题已在 GitHub 上提出:

Python 未解决的导入问题 #3840

MagnuesBrzenk 和 SpenHouet 给出了两个非常有用的答案。

目前最好的解决方案是在项目根文件夹中创建一个 .env 文件。然后向其中添加 PYTHONPATH,如下所示:

PYTHONPATH=YOUR/MODULES/PATH

并在您的 settings.json 中添加:

"python.envFile": ".env"

解决方案 5:

当我> reload window这样做时,问题就解决了。

参考:Python 未解决的导入问题 #3840,dkavraal的评论

解决方案 6:

您需要选择与虚拟环境相关的解释器。

在此处输入图片描述

单击此处(底部状态栏):

在此处输入图片描述

只需选择您正在使用的虚拟环境即可。完成。

有时,即使选择了解释器,它也不会起作用。只需重复该过程即可解决问题。

在此处输入图片描述

解决方案 7:

除了这个之外,其他解决方案都不起作用。在 settings.json 中替换“Pylance”或“Microsoft”解决了我的问题。

"python.languageServer": "Jedi"

解决方案 8:

如果您的settings.json文件中存在此代码,请将其删除:

{
    "python.jediEnabled": false
}

解决方案 9:

我可以通过在 .vscode\settings.json 中启用 jedi 来解决这个问题

"python.jediEnabled": true

参考自https://github.com/Microsoft/vscode-python/issues/3840#issuecomment-456017675

解决方案 10:

如果你和我一样更注重视觉效果,则可以使用菜单文件首选项设置( Ctrl+ )中的 Visual Studio Code 配置,。转到扩展Python

在“分析:已禁用”部分中,添加对以下消息的抑制unresolved-import::

Visual Studio Code 设置

解决方案 11:

我想知道这个问题有多少种解决方案(或者没有),我尝试了上述大多数方法,但都没有用,唯一有效的解决方案是在 settings.json 文件中将 python 语言服务器设置为 Jedi,而不是 Microsoft:

"python.languageServer": "Jedi"

解决方案 12:

好吧,两年后,我又遇到了这个烦人的问题。我在这里看到的都是一些非常复杂的解决方法。以下是一些易于遵循的步骤,供以后可能遇到此问题的人参考:

  • 在 VS Code 底部,你会看到列出的 Python 版本,只需点击那里

  • 将出现选择解释器窗口

  • 单击第一个选项“选择解释器路径”,然后导航到包含虚拟环境的文件夹路径

这就是您需要做的全部工作,避免篡改 VS Code 中的那些设置,如果不小心处理,可能会变得非常复杂。

解决方案 13:

前面的答案对我都不起作用。不过,将下面的两行添加到我的settings.json文件中却起了作用。

"python.analysis.disabled": [
    "unresolved-import"
],
"python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]

第一行实际上只是隐藏了 linting 错误。这当然不是永久的解决方案,但可以简化屏幕。

这个答案给了我第二行:VS Code PyLint Error E0602(未定义变量)与ProtoBuf编译的Python结构

也许有人比我更了解 Python 可以进一步解释这一点。

解决方案 14:

我的解决方案

此解决方案仅适用于当前项目。

  1. 在项目根目录中创建文件夹.vscode

  2. 然后创建文件.vscode/settings.json

  3. 在文件中setting.json,添加以下行(适用于 Python 3)

{
    "python.pythonPath": "/usr/local/bin/python3",
}
  1. 这是 Python 2 的示例

{
    "python.pythonPath": "/usr/local/bin/python",
}
  1. 如果你不知道 Python 安装在哪里,只需在终端上运行命令which pythonwhich python3。它将打印 Python 位置。

  2. 此示例适用于dockerized Python - Django。

解决方案 15:

我在导入与项目相关的(非标准)模块时遇到了同样的问题。问题的详细解释

目录结构:

Project_dir:
    .vscode/settings.json
    dir_1
        > a
        > b
        > c
    dir_2
        > x
        > y
        > z

我们想要的是:

Project_dir
    dir_3
        import a
        import y

这里“ import a ”和“ import y失败并出现以下错误:

Import "dir_1.a" could not be resolvedPylancereportMissingImports
Import "dir_2.y" could not be resolvedPylancereportMissingImports

对我有用的是:

附加包含要导入的模块的顶级目录。

在上面的示例中,在“.vscode/settings.json”中添加以下内容“要附加的代码”

文件名:

.vscode/settings.json

附加代码:

"python.analysis.extraPaths": [dir_1, dir_2]

解决方案 16:

Shinebayar G 的解决方案有效,但是另一个解决方案更优雅一些:

Python 未解决的导入问题 #3840复制:

给出以下示例项目结构:

  • 工作区根文件夹

    • .vscode

  • ... 其他文件夹

  • 代码文件夹

我为解决这个问题做了什么:

  1. 进入工作区文件夹(此处为workspaceRootFolder)并创建一个.env 文件

  2. 在这个空的 .env 文件中,添加行 PYTHONPATH=codeFolder (将 codeFolder 替换为您的文件夹名称)

  3. 将“python.envFile”:“${workspaceFolder}/.env”添加到settings.json

  4. 重新启动 Visual Studio Code

解决方案 17:

对我来说,这个问题与我正在从事的项目有关。我花了一段时间才弄清楚,所以我希望这能有所帮助:

原始文件夹结构:

    root/
    __init__.py  # Empty

        folder/
            __init__.py # Empty

            sub_folder_b/
                my_code.py
            sub_folder_c/
                another_code.py

在another_code.py中:

from folder.sub_folder_b import my_code.py

这并没有触发 Visual Studio Code 中的智能感知,但它确实执行正常。

另一方面,在导入路径上添加“root”确实使智能感知起作用,但在执行时引发了ModuleNotFoundError:

from root.folder.sub_folder_b import my_code.py

解决方案是删除“文件夹”目录内的_ init .py 文件,只留下位于 的 init/root _.py 。

解决方案 18:

这对我有用:

打开命令面板(Ctrl++ ShiftP并选择“Python:选择解释器”。

这样做,您可以在 Visual Studio Code 中设置 Python 解释器。

解决方案 19:

将 Python:语言服务器更改为“Jedi”对我来说很有效。最初是“Windows”。

解决方案 20:

这里的所有答案都无法为我解决此错误。代码可以运行,但我无法直接跳转到函数定义。它仅适用于某些本地包。首先,python.jediEnabled不再是一个有效的选项。我做了两件事,但我不确定第一件事是否必要:

  1. 下载 Pylance 扩展,更改python.languageServer为“Pylance”

  2. 添加"python.analysis.extraPaths": [ "path_to/src_file" ]

显然,根目录和src将检查本地包,但必须在这里添加其他包。

解决方案 21:

我正在使用以下设置:(2021 年 4 月)

  • macos big sur

  • vscode

  • Anaconda 3(用于环境)

我在启动 Django 时遇到了这个错误。因此,我按照以下步骤操作,此错误已解决。

这些屏幕截图给出了步骤:

  1. 打开设置(工作区)

  2. 按照此截图打开Python路径
    按照此步骤进行第 2 步

  3. 现在,点击Edit in settings.json

  4. 制作如本屏幕截图所示的路径/opt/anaconda3/bin/python
    在此处输入图片描述

5.现在,保存此settings.json文件。6.重新启动vscode

此外,智能感知可能在一段时间内不起作用,请等待一段时间,然后重新启动,然后 vscode 读取文件以获取新路径。

解决方案 22:

发生这种情况的原因是 Visual Studio Code 将当前文件夹视为主文件夹,而不是考虑实际的主文件夹。

修复的快速方法是提供主文件夹的解释器路径。

Command+ Shift+ P(或在大多数其他系统上按Ctrl+ Shift+ P)。

类型Python 解释器

从可用选项中选择安装 Python 的路径。

解决方案 23:

对于我来说,如果我将 python、pylint 和 autopep8 的路径设置到本地环境路径,它就会起作用。

对于您的工作区,添加/更改此项:

"python.pythonPath": "...\\your_path\\.venv\\Scripts\\python.exe",
"python.linting.pylintPath": "...\\your_path\\.venv\\Scripts\\pylint.exe",
"python.formatting.autopep8Path": "...\\your_path\\.venv\\Scripts\\autopep8.exe",

保存并使用工作区重新启动 VS Code。完成!

解决方案 24:

我有一个不同的解决方案:我的 Visual Studio Code 实例已获取存储在中的虚拟环境.venv,但它使用了错误的 Python 二进制文件。它正在使用.venv/bin/python3.7;使用蓝色状态栏中的切换器。

我将其改为使用.venv/bin/python,并且我的所有导入都得到了正确解决。

当我这样做时,我不知道 Visual Studio Code 在幕后做什么,也不明白为什么这会导致我的问题,但对我来说,这是一个比编辑工作区设置稍微简单一些的解决方案。

解决方案 25:

如果出现 Pylint 错误,请安装以下内容

pipenv install pylint-django

然后在根文件夹中创建一个文件.pylintrc并写入以下内容

load-plugins=pylint-django

解决方案 26:

我曾以三种方式遇到过这个问题。尽管每种方式都可以在这个问题的答案中找到解决方案,但我只是想把它们放在一起。

  1. 首先,我在导入一些模块时收到“未解决的导入”信息,我注意到我的安装发生在全局 pip 中,而不是虚拟环境中。

此问题是由于 Python 解释器引起的。您需要在 Visual Studio Code 中使用Shift+ Ctrl+选择解释器P,然后键入Select Python Interpreter。在此处选择您的venv解释器。

  1. 第二个问题是:上述更改没有完全解决我的问题。这次是因为文件settings.json。如果您的项目目录中没有settings.json文件,请创建一个并在其中添加以下行:

    {
        "python.pythonPath": "apis/bin/python"
    }

这基本上会告诉 Visual Studio Code 使用 venv 中的 Python 解释器。

  1. 第三个问题是在另一个程序中导入自定义 Python 模块或文件时出现的。为此,您需要了解文件夹结构。由于 venv 中的 Python 位于 bin 内,因此您需要指定模块的文件夹(大多数情况下是应用程序文件夹)。在我的情况下是app

    from app.models import setup_db

口头上,从 models.py 导入 setup_db 位于app文件夹中。

解决方案 27:

如果您正在使用pipenv,则需要指定虚拟环境.insettings.json文件的路径。例如:

{
    "python.pythonPath": 
           "/Users/username/.local/share/virtualenvs/Your-Virual-Env/bin/python"
}

这会有所帮助。

解决方案 28:

我在使用 venv、vscode 1.48.2 的 python 3.8.5 中遇到了同样的问题,我找到了解决方案。在 (env 文件夹)/lib/site-packages 中不包含包。我使用此设置 (.vscode/settings.json)

   {
        "python.autoComplete.extraPaths": [
            "./**",
        ],
        "python.pythonPath": "env\\Scripts\\python.exe",
        "python.languageServer": "Microsoft"
   }

解决方案 29:

如果有人碰巧和我一样愚蠢,那么以下方法就有效了。

旧文件夹结构:

awesome_code.py
__init__.py
    src/
        __init__.py
        stuff1.py
        stuff2.py

新结构:

awesome_code.py
    src/
        __init__.py
        stuff1.py
        stuff2.py

解决方案 30:

如果导入子目录中的模块,请在 .vscode/settings.json 中添加以下设置:

"python.analysis.extraPaths": [
        "./directory_name"
    ]
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用