VS代码-pyinter找不到模块

VS Code - pylinter cannot find module

我开始使用 VS Code 在 Mac 上进行 Python 开发,但无法使 pylint 找到模块。

这是我的项目文件夹结构:

project_root/
   .env
   .vscode/
       settings.json
   lib/
       # lib containing necessary modules
   sample/
       client/
           EDAMTest.py
   # many more files

我使用安装了 pylint 的 virtualenv。虚拟环境在终端中激活。我在终端中通过 code .project_root 文件夹中启动 code

VS Code 说它使用了正确的解释器。我可以看到左下角写着 Python 3.6.1 (virtualenv)

如果我想在终端中测试 project_root/sample/client/EDAMTest.py 代码,我可以在文件夹 project_root/sample/client/.

中通过 export PYTHONPATH=../../lib; python EDAMTest.py 进行测试

现在,如果我在 VS Code 中,打开文件 EDAMTest.pypylint 告诉我它无法从 lib.

导入模块

现在我的问题是:

如何在 VS Code 中将 lib 添加到 PYTHONPATH

我找到了几种可行的方法:

  1. 创建一个 .env 文件(参见下面的 [1])。
  2. .vscode/launch.json 文件中指定 PYTHONPATH(参见 [2])
我找到的

None 个可能的解决方案似乎可行。

我错过了什么?


[1] Environment variable definitions file

这告诉我如何定义全局 (env) 变量。所以我指定了这个:

PYTHONPATH="~/.virtualenvs/evernote/bin/python;lib"

但是不行。 pylint

仍然找不到 libs 路径

[2] 所以我确实创建了一个 launch.json 文件,如下所示:

{
    "name": "Python",
    "type": "python",
    "request": "launch",
    "stopOnEntry": false,
    "pythonPath": "${config.python.pythonPath}",
    "program": "${file}",
    "cwd": "${workspaceRoot}",
    "debugOptions": [
        "WaitOnAbnormalExit",
        "WaitOnNormalExit",
        "RedirectOutput"
    ],
    "env": {
        "PYTHONPATH": "~/.virtualenvs/evernote/bin/python:lib"
    }
}

---

编辑

这里有一个 link 试图解决这个问题:

Troubleshooting linting

link 试图解决几个可能的问题,其中一个是:

... unable to import

建议的解决方案是:

Ensure that the pythonPath setting points to a valid Python installation where Pylint is installed.

=> 是的,我做到了。

Alternately, set the python.linting.pylintPath to an appropriate version of Pylint for the Python interpreter being used.

=> 我做了,还是没有成功:

我的.vscode/settings.json:

{
    "python.pythonPath": "~/.virtualenvs/evernote/bin/python",
    "python.linting.pylintPath": "~/.virtualenvs/evernote/bin/pylint"
}

看来我不得不在 .env 文件中使用冒号而不是分号,如下所示:PYTHONPATH="~/.virtualenvs/evernote/bin/python:lib"。这似乎解决了问题。