【问题标题】:Prevent Jupyter Notebooks from changing the cwd防止 Jupyter Notebooks 更改 cwd
【发布时间】:2017-03-27 14:37:25
【问题描述】:

我的文件夹结构是这样设置的:

- project/
  - notebooks/
    - notebook1.ipynb
  - src/
    - module1.py
    - __init__.py
  - data/
    - data.csv

这样我就可以将我的源代码与实际分析分开。我希望能够从src 导入模块并在notebook1 中使用它们,但是每当我打开notebook1 时,Jupyter 决定将我的工作目录更改为在notebooks 中。

这使得我的导入更难维护,因为我必须导入相对于 Jupyter 的突发奇想的东西 - 有什么方法可以修复 cwd 使其始终为 project,无论我打开什么文件?

我查看了文档和我的 ~/.jupyter/jupyter_notebook_config.py 文件,但没有发现任何可以帮助我的东西。

编辑:我不想在每个脚本的顶部使用 os.chdircd

感谢您的帮助

【问题讨论】:

  • 所以配置文件中的c.NotebookApp.notebook_dir = '' 不符合您的要求?
  • 这只是改变了服务器加载到的目录。使用上面的结构,它会在notebooks 目录中加载jupyter,所以我仍然需要升级到src
  • 如果你使用的是带有jupyte扩展的VSCode,有一个*.com/a/65683620/4050510的设置

标签: python jupyter-notebook jupyter-console


【解决方案1】:

首先,我认为您的意思是cwdpwdprint working directory 的简写,而cwdcurrent working directory 的简写。本质上,pwd 打印出cwd。只是一个小的术语问题!

其次,您可以随时在笔记本顶部手动更改目录:

import os
os.chdir("../")  # or manually specify project - whichever you prefer

我认为没有任何方法可以自动更改默认行为 - 也许在笔记本 git repo 上打开一个问题是个好主意? https://github.com/jupyter/notebook

【讨论】:

  • 哈哈感谢pwd 的评论。我是从一些不正确的讲座 [notes](!) 中得到的,该讲座表明它是“当前工作目录” - 将修改。关于实际答案,这类似于我的备份,它只是使用魔法cd 无需任何导入即可工作,但它仍然没有我想要的那么整洁。我会打开一个问题。