【问题标题】:How can I programmatically check that I am running code in a notebook in julia?如何以编程方式检查我是否在 julia 的笔记本中运行代码?
【发布时间】:2022-01-07 11:31:42
【问题描述】:

我需要以编程方式检查我是否在来自Julia 的 jupyter 笔记本中运行代码。一种方法是使用

isdefined(Main, :IJulia)

但是,这不适用于 vscode 中的笔记本,因为它们是从 IJulia 外部运行的,是否有在这种情况下也可以使用的检查?

【问题讨论】:

  • 那有什么用例?在实践中,它会更有用,例如,在输出 MIME 类型上调度打印和绘图等等,如果这是问题的话
  • 这可能是要走的路。当前未使用调​​度的原因是我们希望允许 Pluto 和 Jupyter 支持具有相同的签名但是我不确定与 jupyter 一起使用的 Interact 方法是否也适用于 Pluto。
  • IIRC Pluto 和 IJulia 想要与Base.show() 相同类型的 MIME 专业化
  • 感谢您的评论,但是我们有一个交互式查看器在 Pluto 和 Jupyter 中的行为不同

标签: visual-studio-code jupyter-notebook julia


【解决方案1】:

@__FILE__ 在 Julia REPL 中产生 REPL[_],在 Jupyter 中产生 In[_],在 Pluto 中产生“/path/to/file.jl#==#hashocde”,所以测试可能是:

match(r"^In\[[0-9]*\]$", @__FILE__) != nothing

在 VSCode 中:

如果你想找到 VSCode,你可以检查文件是否以“.ipynb”结尾。此外:如果您从 VSCode 运行,isdefined(Main, :VSCodeServer) 会产生 true

【讨论】:

  • 感谢这适用于我的情况!
猜你喜欢
  • 2013-03-02
  • 2020-09-03
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
相关资源
最近更新 更多