如何将所有Jupyter笔记本的默认工作目录设置为项目的父文件夹 [英] How to set the default working directory of all Jupyter Notebooks as the project's parent folder

查看:24
本文介绍了如何将所有Jupyter笔记本的默认工作目录设置为项目的父文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题:如何通过双击将在Jupyter Lab中打开的所有笔记本的工作目录设置为项目的文件夹/myproject/,而不考虑该笔记本在父文件夹中的子文件夹?工作目录在Linux/Mac上由!pwd标识,在Windows上由!cd标识。

上下文: Jupyter实验室会话从项目的文件夹启动,由:/myproject/jupyter lab

我不希望使用代码更改笔记本中的工作目录(例如,使用!cd..或使用os),但希望更改Jupyter Lab的设置,以便所有内核都将从启动Jupyter Lab的文件夹开始。

这对于能够使用一致的相对文件夹非常有用,而不管它们是从哪个子文件夹引用的。例如,用于加载特定子文件夹中的数据。

推荐答案

我同意这通常是首选方法!我总是将我的笔记本配置为这样工作,因为它:

  • 使您可以轻松指定数据路径和输出路径
  • 允许在目录之间移动笔记本,而无需更改路径
  • 使jupyterlab-lsp代码智能工作更可靠

我有一个名为make_paths_absolute.py的python模块,其内容如下:

from os import chdir
from pathlib import Path


def make_paths_relative_to_root():
    """Always use the same, absolute (relative to root) paths

    which makes moving the notebooks around easier.
    """
    top_level = Path(__file__).parent

    chdir(top_level)


make_paths_relative_to_root()

在每个笔记本的第一个单元格中,我添加一行import make_paths_absolute。我喜欢这种方式,因为它使它:

  • 可重现:任何复制/克隆我的项目的人都将能够运行代码,而无需在其Jupyter环境中自定义任何内容
  • 使用所有笔记本界面(无论是JupyterLab/RetroLab/经典笔记本)
  • 对于任何阅读笔记本的人来说都很明显,他们应该期望路径是绝对的(=相对于根)。
要使其正常工作,您首先需要在启动JupyterLab时将PYTHONPATH设置为指向存储库的根。要在Linux/Mac上执行此操作,您可以在jupyter lab命令前面加上:

PYTHONPATH=/path/to/your/lab/root:$PYTHONPATH jupyter lab

PS。以上是对我的设置的简化。实际上,我将make_paths_absolute.py存储在helpers包中(因此也有一个空helpers/__init__.py和额外的.parent)以及其他初始化时间代码,包括名为notebook_setup.ipynb的笔记本,它包含诸如%matplotlib inline、 pandas 定制(如确保使用稳定排序)、警告过滤器等内容。因此,我的每个笔记本都以:

开头
import helpers.make_paths_absolute
%run helpers/notebook_setup.ipynb

我真的很喜欢这个设置,现在已经这样工作了两年,没有任何问题。

这篇关于如何将所有Jupyter笔记本的默认工作目录设置为项目的父文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆