如何在VS Code中为Python交互窗口设置导入路径?

4
我在使用常见的项目结构,其中python包位于包含目录的顶层和命名为“scripts”和“tests”的子目录中。通常情况下,您希望使用此设置将顶级文件夹添加到sys.path中,以便可以在脚本和测试中使用“import mypackage”语句。
我发现我需要使用两种不同的机制来设置PYTHONPATH用于测试和linting等:添加.env文件和设置终端的terminal.integrated.env.windows参数。然而,这两种机制似乎都无法影响Python Interactive窗口,因此如果我在脚本中定义一个使用#%%的单元格并使用Ctrl-Enter运行它,则无法找到位于项目根目录的我的包。
是否有一种方法可以在不更改源文件的情况下实现我想要的功能?理想情况下,希望有一种工作在任何地方的设置导入路径的方法,而无需像.env文件中那样指定绝对路径。例如,Spyder可以通过其PYTHONPATH管理器实现这一点,并默认添加项目的根目录。

我已经在本地尝试过了,一切都很顺利。无论是 Jupyter Notebook 还是 Python Interactive 都可以在 sys.path 中找到 .env 文件中定义的 PYTHONPATH 属性的值。配置完 .env 文件后,最好重启 VSCode 或 Jupyter Server。 - Steven-MSFT
1个回答

3

你需要查找的设置中的魔法关键字是jupyter.notebookFileRoot。因此,在你的settings.json文件中添加类似以下内容:

"jupyter.notebookFileRoot": "${workspaceFolder}"

或者您需要的任何文件夹。

另外,您也可以前往 设置CTRL + ,),选择 工作区 选项卡,向下滚动或搜索 Jupyter: Notebook File Root 并在那里输入您的文件夹。

在设置文件中,您还可以添加启动配置等。我的设置文件当前看起来像这样,并支持运行完整的 Python 文件(CTRL + F5),以及交互模式(运行由 # %% 定义的单元格):

{
    "launch": {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Python: Current File",
                "type": "python",
                "request": "launch",
                "program": "${file}",
                "console": "integratedTerminal",
                "env": {
                    "PYTHONPATH": "${workspaceFolder}"
                },
                "cwd": "${workspaceFolder}"
            }
        ]
    },
    "jupyter.notebookFileRoot": "${workspaceFolder}"
}

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