Python 派林;“未解决的进口”;Visual Studio代码中出现错误

Python 派林;“未解决的进口”;Visual Studio代码中出现错误,python,django,visual-studio-code,pylint,Python,Django,Visual Studio Code,Pylint,我正在使用以下设置 (莫哈韦) Python 3.7.1 Visual Studio代码1.30 Pylint 2.2.2 Django 2.1.4 我想使用linting使我在visualstudio代码中的生活变得更轻松。然而,对于每一个导入,我都会声明“未解决导入”。即使是默认的Django导入(即来自Django.db导入模型) 我认为这是因为它没有看到虚拟环境中的Python文件 一切正常,但开始变得烦人了 我选择的解释器都是Python的系统版本。它似乎根本看不到我的虚拟环境Py

我正在使用以下设置

  • (莫哈韦)
  • Python 3.7.1
  • Visual Studio代码1.30
  • Pylint 2.2.2
  • Django 2.1.4
我想使用linting使我在visualstudio代码中的生活变得更轻松。然而,对于每一个导入,我都会声明“未解决导入”。即使是默认的Django导入(即来自Django.db导入模型)

我认为这是因为它没有看到虚拟环境中的Python文件

一切正常,但开始变得烦人了

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

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

是否有快速修复方法使其工作?

在中,您可以如下设置Python路径:

{
    "python.pythonPath": "/path/to/your/venv/bin/python",
}
PYTHONPATH=YOUR/MODULES/PATH

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

{
    "python.jediEnabled": false
}

此问题已在GitHub上打开:

这里有两个非常有用的答案,分别是马格努斯布泽克和斯宾霍伊特的

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

{
    "python.pythonPath": "/path/to/your/venv/bin/python",
}
PYTHONPATH=YOUR/MODULES/PATH
并在您的settings.json中添加:

"python.envFile": ".env"

我有一个不同的解决方案:我的Visual Studio代码实例拾取了存储在.venv中的virtualenv,但它使用了错误的Python二进制文件。它使用的是
.venv/bin/python3.7
;使用蓝色状态栏中的开关

我将它改为使用
.venv/bin/python
,所有导入都得到了正确解析


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

当我做>时,重新加载窗口可以修复它


参考:

替代方法:使用命令界面

Cmd/Ctrl+Shift+p→ Python:选择解释器→ 选择包含您要查找的软件包的软件包:


我能够通过在.vscode\settings.json中启用绝地来解决这个问题

"python.jediEnabled": true

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

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

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

参考资料:

之前的答案对我都不适用。但是,将下面的两行添加到我的settings.json文件中确实做到了

"python.analysis.disabled": [
    "unresolved-import"
],
"python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]
第一行实际上只是隐藏了linting错误。当然,这不是一个永久的解决方案,但会消除屏幕上的混乱

这个答案给了我第二句话:


也许比我更了解Python的人可以再解释一次。

如果出现Pylint错误,请安装以下程序

pipenv install pylint-django
load-plugins=pylint-django
然后在根文件夹中创建一个文件,.pylintrc,并编写以下命令

pipenv install pylint-django
load-plugins=pylint-django
这对我很有用:

打开命令调色板(Ctrl+Shift+p)并选择“Python:选择解释器”

为此,您可以在Visual Studio代码中设置Python解释器。

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

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

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

  • 在文件
    setting.json
    中,添加行(这是针对Python 3的)

  • 这是Python2的示例

    {
        "python.pythonPath": "/usr/local/bin/python",
    }
    
  • 如果您不知道Python安装的位置,只需在终端上运行命令
    whichpython
    whichpython3
    。它将打印Python位置

  • 此示例适用于Python-Django


  • 我已通过Ctrl+Shift+p解决了导入错误。 键入“首选项设置”并选择“首选项打开设置(JSON)”选项

    并添加行
    “python.pythonPath”:“/usr/bin/”

    因此,JSON内容应该如下所示:

    {
        "python.pythonPath": "/usr/bin/"
    }
    
    保留其他配置行(如果存在)。 这将导入使用PIP进行自动完成安装的所有模块。

    工作正常,但另一个模块稍微优雅一些:

    抄袭自:

    给出以下示例项目结构:

        root/
        __init__.py  # Empty
    
            folder/
                __init__.py # Empty
    
                sub_folder_b/
                    my_code.py
                sub_folder_c/
                    another_code.py
    
    
    awesome_code.py
    __init__.py
        src/
            __init__.py
            stuff1.py
            stuff2.py
    
    awesome_code.py
        src/
            __init__.py
            stuff1.py
            stuff2.py
    
    • 工作空间根文件夹
      • .vscode
    • 。。。其他文件夹
    • 代码文件夹
    我是如何解决这个问题的:

  • 进入工作区文件夹(此处为workspaceRootFolder)并创建一个.env文件
  • 在这个空的.env文件中,添加行PYTHONPATH=codeFolder(用文件夹名替换codeFolder)
  • 将“python.envFile”:“${workspaceFolder}/.env”添加到settings.json
  • 重新启动Visual Studio代码

  • 我的解决方案是在以前的目录中打开Visual Studio代码。

    如果您更像我,可以使用菜单文件中的Visual Studio代码配置→ 偏好→ 设置(Ctrl+,)。转到分机→ 蟒蛇

    在“分析:禁用”部分中,添加对以下消息的抑制:
    未解析导入


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

    原始文件夹结构:

        root/
        __init__.py  # Empty
    
            folder/
                __init__.py # Empty
    
                sub_folder_b/
                    my_code.py
                sub_folder_c/
                    another_code.py
    
    
    awesome_code.py
    __init__.py
        src/
            __init__.py
            stuff1.py
            stuff2.py
    
    awesome_code.py
        src/
            __init__.py
            stuff1.py
            stuff2.py
    
    在另一个_code.py中:

    from folder.sub_folder_b import my_code.py
    
    这并没有触发VisualStudio代码中的intellisense,但它确实执行正常

    另一方面,在导入路径上添加“root”确实使intellisense工作,但在执行时引发ModuleNotFoundError:

    from root.folder.sub_folder_b import my_code.py
    

    解决方案是删除“folder”目录中的_init_uuupy.py文件,只留下位于
    /root

    的_init_uupy.py文件。您需要选择与虚拟机关联的解释器 "python.linting.pylintArgs": ["--rep[![enter image description here][1]][1]orts", "12", "--disable", "I0011"], "python.linting.flake8Args": ["--ignore=E24,W504", "--verbose"] "python.linting.pydocstyleArgs": ["--ignore=D400", "--ignore=D4"]
    Project_dir:
        .vscode/settings.json
        dir_1
            > a
            > b
            > c
        dir_2
            > x
            > y
            > z
    
    Project_dir
        dir_3
            import a
            import y
    
    Import "dir_1.a" could not be resolvedPylancereportMissingImports
    Import "dir_2.y" could not be resolvedPylancereportMissingImports
    
    .vscode/settings.json
    
    "python.analysis.extraPaths": [dir_1, dir_2]