【问题标题】:Jupyter Lab/Notebook magic command %load with platform independent pathJupyter Lab/Notebook 魔术命令 %load 与平台无关路径
【发布时间】:2018-09-03 11:25:53
【问题描述】:

我正在尝试开发一个 Jupyter 笔记本,其中包含具有 %load 魔术命令以从其他地方加载代码的单元。此代码与笔记本所在的目录不同。我希望它可以在 Windows、Linux 和 Mac 上运行,因此路径分隔符有时应该是“\”,有时应该是“/”。

通常我会使用 os.path.join 来解决这个问题。然而,当我使用 load 命令执行此操作时,笔记本只会评估路径,并不会实际加载代码。除了首先更改工作目录并在执行我加载的代码后将其更改回来之外,有没有其他方法可以做到这一点?

简单示例:

import os
%load os.path.join('example', 'file.py')

这会产生错误,因为它实际上会搜索名称为 os.path.join('example', 'file.py') 的文件。如果我首先评估它并将结果放入负载中,我会得到:

import os
to_include = os.path.join('example', 'file.py')
print(to_include)
%load to_include

计算结果只是

# %load to_include
example/file.py

但显然我想要加载该文件的内容,而不是路径+文件名。我做错了什么?

【问题讨论】:

    标签: python load jupyter-notebook os.path ipython-magic


    【解决方案1】:

    在 Jupyter 中,您必须以类似 bash 的语法扩展变量,以便它们在魔术函数中工作。

    这就是您必须使用 $ 符号的原因。 在你的情况下:

    import os
    to_include = os.path.join('example', 'file.py')
    %load $to_include
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      相关资源
      最近更新 更多