【问题标题】:How to change jupyter notebooks working directory configuration如何更改 jupyter notebooks 工作目录配置
【发布时间】:2021-04-27 16:54:22
【问题描述】:

我希望所有笔记本的工作目录成为我运行命令的位置,而不是笔记本所在的位置。

举个例子:

root_folder/ 
    notebooks/
        subject_A/
            notebook.ipynb
    src/
        module.py

# notebook.ipynb

from src import module

我想从root_folder 运行jupyter notebook(或实验室)并从工作目录导入模块。我不认为os.chdir 是一个好的解决方案,因为将笔记本移动到另一个文件夹会中断导入。我也不想在笔记本中添加绝对路径,这个解决方案是不可导出的:我的绝对路径和你的不一样。

我知道我可以添加 setup.py 以使 src 可安装,但正在寻找更直接的方法(我想更改工作目录,而不是安装包)。

我还想要一种独立于笔记本位置的方法,无论它是在notebooks/A 还是在notebook/A/B,它都是一样的。

有没有办法做到这一点?

【问题讨论】:

    标签: python jupyter-notebook jupyter jupyter-lab


    【解决方案1】:

    我会尝试使用sys,然后导入module。它不会更改您的 cwd,但您将能够在 src 中导入您的模块

    import sys
    sys.path.append("absolute/path/to/src")
    
    from module import *
    

    【讨论】:

      【解决方案2】:

      像这样找到root_folder

      import os 
      
      # Get current working directory, in your case cwd is ../root_folder/notebooks/subject_A
      
      cwd = os.getcwd()
      
      root_folder = os.path.dirname(os.path.dirname(cwd))
      

      找到root_folder后:

      path_to_src = os.path.join(root_folder, 'src')
      

      最后,将path_to_src 附加到sys.path

      import sys
      sys.path.append(path_to_src)
      

      现在 Python 可以从 src 导入任何模块。如果将root_folder 移动到其他系统或目录,上述过程将能够从src 导入任何模块。

      【讨论】:

      • 感谢@pouya 的帮助。如果我将笔记本向上或向下移动文件夹,此解决方案需要不同的实现,不是吗?
      • 欢迎您。当你为你的项目保留这个文件系统时,实现不需要改变。
      猜你喜欢
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多