我正在尝试将当前工作目录(CWD)设置为VS代码中木星笔记本的编辑文件位置。我在${fileDirname}
设置中使用python.dataScience.notebookFileRoot
。但是,它使用临时文件夹作为${fileDirname}
,而不是原始文件文件夹。
同样的问题已经讨论了几次(例如https://stackoverflow.com/a/54794976/12488601),并指出了已尝试过的解决方案。
以下是cwd的示例:
os.getcwd()
.. 'C:\\Users\\MjH\\AppData\\Local\\Temp\\1f6cc207-562f-4ae1-8754-e2013ae2c12d'
而预期的结果是C:\工作区\Project。
因此,在我的情况下,使用${fileDirname}
是行不通的。我使用以下即席解决方案,很明显,如果文件被移动,它不会更新.
import sys
import os
sys.path.insert(0, r'C:\workspace\project')
os.chdir(sys.path[0])
现在我试着理解三件事:
VS代码版本:代码1.40.2 (f359dd6,2019-11-25T14:54:45.096Z)
操作系统版本: Windows_NT x64 10.0.17763
发布于 2021-01-12 12:05:59
从2021年1月起,在我的设置中添加以下行有助于解决这个问题
"jupyter.notebookFileRoot": "${workspaceFolder}",
发布于 2020-01-10 12:43:47
我也受到这个问题的影响。我就是这样解决的。
使用${fileDirName}
在Python中的配置参数> DataScience:笔记本文件根,会产生这种效果,因为我可以在我的环境中检查。
如果我使用命令Ctrl+Shift+P > Python :显示打开Python窗口,然后运行:
import os
os.getcwd()
输出是一个随机的时间文件夹。所以我无法进行导入,因为我的本地相关模块找不到。
但是,如果不是直接打开一个新的窗口,而是运行我的任何Python文件的代码单元格
#%%
print("Some string here")
然后找到当前的工作路径,它将按预期更改为fileDirName
。然后,与交互窗口的任何交互都将正确执行(我的下一个导入将正确执行)。
为了避免这种行为,并且由于我想在我的workspaceFolder中执行操作,我将木星:笔记本文件根更改为${workspaceFolder}
。在这种情况下,打开一个新的Python窗口,将自动将当前路径设置为workspaceFolder,并且不需要执行任何python。
我认为,在使用${fileDirName}
时,最好将当前工作的打开文件文件夹设置为(木星)的工作路径,而不是时间上的随机文件夹(在打开而不执行特定单元格的情况下),但它的行为不像这样。
希望它有用!
自2020年11月以来,将木星扩展与VS代码的Python代码分开。设置键已从python.data science重命名为jupyter
。
发布于 2019-12-06 00:50:58
要回答你的第三个问题,请尝试如下:
import os
os.system("echo %cd% > dir")
file = open("dir", "r")
filePath = file.read()
file.close()
print(filePath.split("\n")[0])
https://stackoverflow.com/questions/59205268
复制相似问题