如何在 VScode 中正确设置 PYTHONPATH env

Cod*_*ang 3 pythonpath python-2.7 visual-studio-code

项目结构就像

- a.py
- unittest
   - test_a.py
Run Code Online (Sandbox Code Playgroud)

py

class A():
    def function_a(self):
        return 'function_a'
Run Code Online (Sandbox Code Playgroud)

测试_a.py

from a import A

class TestA():
    def test_a(self):
        assert A().function_a() == 'function_a'
Run Code Online (Sandbox Code Playgroud)

当我使用终端 和 时set PATHONPATH=//<my-project-folder>,可以通过 检测和测试它pytest。然而,当我尝试在 VScode 中调试它时,它不断抛出No module named a.

https://code.visualstudio.com/docs/python/environments#_environment-variable-definitions-file

我已经尝试过这种方法并将其放入.env我的项目文件夹中。

.env

PYTHONPATH=C:\\Repos\\test-project
Run Code Online (Sandbox Code Playgroud)

(我在有转义和没有转义的情况下都做到了,无论如何它都不起作用。)

.vscode/setting.json

{
    "python.pythonPath": "C:\\Python27\\python.exe",
    "python.testing.pytestArgs": [
        "unittest"
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.nosetestsEnabled": false,
    "python.testing.pytestEnabled": true,
    "python.envFile": "${workspaceFolder}/.env",
}
Run Code Online (Sandbox Code Playgroud)

rio*_*oV8 5

要找出环境变量的值,PYTHONPATH请使用以下test_a.py文件

import os

def test_PYTHONPATH():
  assert os.environ.get('PYTHONPATH') == "XX"

Run Code Online (Sandbox Code Playgroud)

我已经在 Windows 上使用 Python 3.6 对其进行了测试。

在我的测试中,我在工作区根文件夹中设置了.env内容

PYTHONPATH=C:\Projects\test-project\
Run Code Online (Sandbox Code Playgroud)

运行测试会出现断言错误,并显示 的值PYTHONPATH是操作系统定义的值。

启动终端并PYTHONPATH从全局环境变量中删除,并使用C:\Projects\test-project\参数从该终端启动 VSC 打开项目,现在测试失败,但显示文件PYTHONPATH中定义的正确内容.env

我得出的结论是,操作系统环境变量(在 Windows 上)会覆盖 VSC 设置的任何环境变量。如果这是正确的,您将无法像文档中所示那样扩展环境变量

PYTHONPATH=${PROJ_DIR}:${PYTHONPATH}
Run Code Online (Sandbox Code Playgroud)

这应该在 VSC 或 VSC-python 扩展中作为错误归档。

VSC 中定义的任何内容都应覆盖任何操作系统环境变量,并且能够使用任何操作系统环境变量。