在vscode中运行python代码和jupyter扩展时当前工作目录错误

时间:2019-02-17 07:02:53

标签: python visual-studio-code jupyter

我正在尝试使用vscode here中的jupyter扩展名运行python代码

我在此位置打开了一个工作区 /用户/用户/文档/ 当我尝试在子目录中名为test.py的文件中运行以下代码时,当前的工作目录是在工作区级别而不是在文件级别设置的。是否可以更改设置以使用文件的cwd而不是工作区?我在settings.json中找不到一个,而launch.json中的“ cwd”似乎仅适用于调试。

文件位置: /Users/user/Documents/python_code/test.py

#%%
import os
print(os.getcwd())

预期输出: / Users / user / Documents / python_code /

实际输出: / Users / user / Documents /

在终端上运行相同的代码时,它会打印出预期的结果,因此问题似乎与jupyter扩展有关

2 个答案:

答案 0 :(得分:1)

对于在VS Code中打开的任何特定文件夹/工作空间,您可以使用notebookFileRoot设置来设置特定的绝对路径目录,以在打开该文件夹时启动“交互窗口”时始终将Jupyter工作目录设置为。

始终不通过notebookFileRoot设置打开文件位置(不必将notebookFileRoot设置为每个文件夹的绝对路径)。 VSCode变量(例如$ {fileDirname})特定于任务和调试配置文件(launch.json和task.json)。我们专门为设置页面添加了用于识别$ {workspaceFolder}的代码,但是在此页面中我们无法识别其他VSCode变量。

如果需要,这里有一个github项目建议了此功能。如果要添加此功能,可以遵循或投票赞成。 https://github.com/Microsoft/vscode-python/issues/4441

答案 1 :(得分:0)

据我所知,有一种设置python.dataScience.notebookFileRoot可以在将其设置为${fileDirname}时达到预期的行为。 参见correspoding source

但是,在我看来,它似乎不起作用。也许是个错误?

请注意,从终端运行脚本的输出取决于终端的工作目录!