如何将所有Jupyter笔记本的默认工作目录设置为项目的父文件夹 [英] How to set the default working directory of all Jupyter Notebooks as the project's parent folder
本文介绍了如何将所有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/经典笔记本)
- 对于任何阅读笔记本的人来说都很明显,他们应该期望路径是绝对的(=相对于根)。
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屋!
查看全文