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

时间:2017-09-15 21:57:57

标签: jupyter-notebook

请考虑以下事项:

$ cd /home/mydir
$ jupyter notebook --port=8888

简单来说,我正在/home/mydir目录中运行jupyter服务器。

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

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

3 个答案:

答案 0 :(得分:2)

我也遇到类似的问题,并且找到了您的帖子,尽管我没有找到可行的解决方案。最终,我确实找到了一个解决方案,尽管它仅适用于我只关心Linux和Python的问题。解决的办法是这条魔术线:

J_ROOT = os.readlink('/proc/%s/cwd' % os.environ['JPY_PARENT_PID'])

(我将其放在PYTHONPATH中的模块中,以便可以在任何Python笔记本中轻松使用它。)看看它是否对您有好处。

答案 1 :(得分:0)

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

import os
os.getcwd()

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

!which jupyter

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

然后引导您运行类似:

!jupyter --paths

应该给你类似的东西:

config:
    /Users/yourdir/.jupyter
    /usr/local/etc/jupyter
    /etc/jupyter
data:
    /Users/yourdir/Library/Jupyter
    /usr/local/share/jupyter
    /usr/share/jupyter
runtime:
    /Users/yourdir/Library/Jupyter/runtime

答案 2 :(得分:0)

坦率地说,令我惊讶的是,在这段时间之后,仍然没有内置的方法来执行此操作。我在Linux上使用过Isaac To's solution,但最近也不得不将jupyter笔记本也移植到Windows。简单地使用os.getcwd()很脆弱,因为在更改工作目录后,可能会再次调用使用它来设置JUPYTER_ROOT_DIRECTORY的单元格。

这是我想出的:

try:
    JUPYTER_ROOT_DIRECTORY
except NameError: 
    JUPYTER_ROOT_DIRECTORY = os.getcwd()

我将其放在带有初始import语句的前几个单元格之一中。如果再次调用该单元格,则不会重新设置变量值,因为该变量存在并且不会引发异常。

应注意,与Isaac To's solution不同的是,它将值设置为运行当前.ipynb的目录,该目录不必与用户可以在左侧访问的顶级目录相同。文件窗格。