在VS Code中为本地Jupyter Notebook设置PYTHONPATH

23
我使用的是在Windows 10上的Visual Studio 1.39.2。我很高兴今年十月份(2019年)可以直接通过VS Code运行Jupyter Notebook,但我有一件事无法正确设置,在启动本地Jupyter服务器之前如何设置PYTHONPATH
我的需求是能够导入位于另一个文件夹中的特定模块(因为该模块是从C ++代码编译而成)。当我运行正常的Python调试会话时,我发现可以通过设置terminal.integrated.env.linux选项来设置终端的环境变量。因此,当我在正常调试时,我通过这个选项设置了我的PYTHONPATH。但是当运行Jupyter Notebook时,本地Jupyter服务器似乎不在集成终端中运行(至少从我所见),因此它没有设置PYTHONPATH
我的问题是,如何在VS Code中自动为我的本地Jupyter Notebook服务器设置PYTHONPATH
3个回答

15
我发现你可以在settings.json文件中为Jupyter笔记本设置这个。
{
    "jupyter.notebookFileRoot": "/path/to/your/module/root"
}

编辑:或者更普遍地将其设置在您的工作区根目录:

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

1
PYTHONPATH应该指向Python可执行文件吗?这似乎是配置笔记本所在目录,而不是Jupyter应该使用的Python可执行文件。这不是OP所问的吗? - user2739472
@user2739472 并不完全准确 - Alecg_O

5

我是这个扩展程序的开发人员。如果您有特定的模块解析路径,我们为Jupyter功能提供了一个设置:

Python->数据科学: 运行启动命令

该设置将在启动时在任何Jupyter会话上下文中运行一系列Python指令。在该设置中,您可以直接将所需的路径添加到sys.path中,然后每次启动笔记本或交互式窗口会话时,它都会运行并添加该路径。


我无法让它正常工作。我通过在启动命令中分配一个变量来测试它,例如 hi = 42,然后通过命令面板创建一个新的空白 Jupyter 笔记本,并输入 print(hi)。然后,如果我尝试运行笔记本,该变量将未定义。我做错了什么? - Olov
1
这对我有用,通过添加 sys.path.append('./src'),其中 src 是我放置 Python 的文件夹,但感觉这是一种非常笨拙的方式将我的项目源代码“注入”到 Jupyter 环境中。@IanHuff 是否正在考虑任何改进? - janh
@janh 不好意思回复慢了。我不经常上SO。如果您愿意,可以在此处创建GitHub问题反馈此建议:https://github.com/microsoft/vscode-python/issues。这是我们跟踪和处理所有工作项的地方。 - Ian Huff
@IanHuff 我添加了一个答案,我认为可能是您描述的功能的进化?目前我找不到“运行启动命令”或任何其他数据科学设置。 - Alecg_O

2

我曾经遇到过导入一个用C++开发的Python模块的问题。我将从我的笔记本到我的工作区文件夹中的.env文件添加了相对路径。

PYTHONPATH=build/lib:../../../build/lib

工作区文件夹的路径是build/lib,笔记本文件夹的路径是../../../build/lib,路径分隔符是:

(我在工作区文件夹中有build/lib路径,是为了进行pytest测试。)


在Linux上测试过,但未在Windows上测试。路径分隔符可能在Windows上不同? - TooTone

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