获取jupyter服务器根目录的方法

Mat*_*orm 5 jupyter-notebook

考虑以下事项:

$ cd /home/mydir
$ jupyter notebook --port=8888
Run Code Online (Sandbox Code Playgroud)

用简单的英语,我从/home/mydir目录运行 jupyter 服务器。

有没有一种简单的方法可以从笔记本中获取此目录,无论它是 R 笔记本还是 Python 笔记本或其他什么?也许有一些神奇的命令或变量?

注意:getwd() 不是答案,因为它返回当前笔记本的目录,而不是 jupyter 服务器根目录。

小智 5

我有一个类似的问题并找到了您的帖子,尽管我还没有看到可行的解决方案。最终我确实找到了一个解决方案,尽管它有效只是因为我只关心 Linux 而我只关心 Python。解决方案是这条神奇的线:

J_ROOT = os.readlink('/proc/%s/cwd' % os.environ['JPY_PARENT_PID'])
Run Code Online (Sandbox Code Playgroud)

(我将它放在我的 PYTHONPATH 中的一个模块中,以便我可以在任何 Python 笔记本中轻松使用它。)看看它是否适合您。


Sha*_*han 1

请记住,您的 iPtyhon 只是一个 Python 模块,因此您可以在单元格中执行任何有效的 Python 代码。因此,如果您启动了笔记本并且没有在代码中执行任何目录更改,您应该能够cwd在单元格中使用以下内容检索您的笔记本:

\n\n
import os\nos.getcwd()\n
Run Code Online (Sandbox Code Playgroud)\n\n

但此外,您可以在单元格中执行 shell 命令,因此您可以检索单元格中的其他信息。例如:

\n\n
!which jupyter\n
Run Code Online (Sandbox Code Playgroud)\n\n

应该为您提供 jupyter 可执行文件的路径。

\n\n

然后,您将运行以下命令:

\n\n
!jupyter --paths\n
Run Code Online (Sandbox Code Playgroud)\n\n

这应该给你类似的东西:\n\xe2\x80\x8b

\n\n
config:\n    /Users/yourdir/.jupyter\n    /usr/local/etc/jupyter\n    /etc/jupyter\ndata:\n    /Users/yourdir/Library/Jupyter\n    /usr/local/share/jupyter\n    /usr/share/jupyter\nruntime:\n    /Users/yourdir/Library/Jupyter/runtime\n
Run Code Online (Sandbox Code Playgroud)\n

  • 我不明白为什么 Jupyter 不能轻松获取 Jupyter 目录结构中的根目录。Jupyter 的目的是提高数据科学的可重复性。其中一部分是可移植性(其他人能够轻松运行您的笔记本电脑)。为了完全可移植,必须使用相对路径。但是,如果重新排列笔记本目录结构,则笔记本中使用的文件的相对路径都会被破坏。从 Jupyter 目录结构的根设置所有文件路径比从笔记本的相对路径设置更有意义。正确的?? (7认同)
  • 我有一个嵌套的目录结构。Jupyter 从 `/home/mydir` 目录运行,而笔记本则在 `/home/mydir/subdir/another/` 文件夹中运行。当我需要项目根目录时,`os.getcwd()` 返回当前笔记本目录。 (2认同)