如何在使用VSCode Python扩展进行调试时使用PYTHONPATH?

13

我正在处理一个结构类似于以下的项目

Parent Directory
----+ MyPackage
     ----__init__.py
     ----file1.py
----+ Tests
     ----test.py

当我从终端运行测试时,我会使用

PYTHONATH=./ python ./Tests/test.py

现在,在安装了“Python扩展”之后,当我尝试使用调试选项时,会出现错误

Exception has occurred: ModuleNotFoundError
No module names 'MyPackage'

我该如何将PYTHONPATH放入调试配置中,以便它得到处理?

1
在Windows上,环境变量'path'应该指向您的Python安装目录,也就是解释器。如果VS Code正在使用环境变量'pythonpath',您应该能够添加路径到您自己的模块,这样VS Code就知道从哪里查找要导入的内容了。 - FObersteiner
@rok 不,那是错误的。请阅读有关 PYTHONPATH 环境变量的官方文档:https://docs.python.org/3/using/cmdline.html?highlight=pythonpath#envvar-PYTHONPATH - niid
1
@niid。谢谢。已删除。 - rok
3个回答

7

经过一些搜索和试错,我找到了可行的解决方案。我在这里发布它,以便寻找相同问题的人也可以尝试。 我不确定这是否是正确的做法。

创建(或添加到)一个名为.vscode/settings.json的文件,内容如下:

{
    // .. any other settings
    "terminal.integrated.env.linux": {
        "PYTHONPATH": "${workspaceFolder}"
      }
}

现在我可以使用这个包来运行我的项目。


5
只有当你执行一些需要通过终端运行的操作(例如调试)时,这个解决方案才能起作用,但是对于解释器代替你执行的操作(例如使用“测试资源管理器”运行测试),它将不起作用。你也可以定义一个环境变量定义文件,它应该适用于所有情况。 - Brett Cannon
1
@ Brett,我不确定 .env 在 python.pythontPath 上是否仍然有效。请参见下面的注释#3:https://code.visualstudio.com/docs/python/environments#_manually-specify-an-interpreter - Natetronn

5
在VSCode 1.74.0中,我通过在我的调试launch.json中放置路径来使其工作。
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python debugging"
            "type": "python"
            // other settings
            "env": {
                "PYTHONPATH": "${workspaceFolder}",
            }
        }
    ]
}

1

使用 venv 我尝试了各种方式来调整 terminal.integrated.env.x 设置,以及在 launch.json 中的 env/cwd,虽然我可以在运行文件时得到这种情况,但是在调试文件时无法正确地工作。

所以,我最终做的是在本地修改 .venv/bin/activate 文件,将项目添加到 Python 路径中作为激活的一部分。我认为这个解决方案很好,因为 venv 只用于此项目,并且它涵盖了在 IDE 中运行文件的所有情况。

我将以下内容添加到 myProject/.venv/bin/activate 的底部:

PYTHONPATH="/Users/path/to/your/project/:$PYTHONPATH"
export PYTHONPATH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接