Jupyter Notebook-魔术功能:加载.py文件并运行

时间:2019-04-19 20:51:35

标签: python jupyter-notebook ipython python-sphinx

我正在使用jupyter笔记本创建软件文档(带有nbsphinx的sphinx)。我想在jupyter笔记本中包含一些.py文件。这些文件应加载并显示在单元格中(因为它们应稍后出现在文档中),并且还应运行以产生所需的输出(图形和文本)。

我发现不久前有人在问类似的事情: Jupyter: Write a custom magic that modifies the contents of the cell it's in 但是,使用答案对我不起作用。

我不得不做些小修改,因为我不想在执行单元格后注释掉魔术线本身。 ('#%lmagic \ n {}'->'%lmagic \ n {}')

from __future__ import print_function
from IPython.core.magic import Magics, magics_class, line_magic

@magics_class
class MyMagics(Magics):

    @line_magic
    def lmagic(self, line):

        raw_code = 'print("Hello world!")'

        # Comment out this line if you actually want to run the code.
        self.shell.set_next_input('%lmagic\n{}'.format(raw_code), replace=True)

        # Uncomment this line if you want to run the code instead.
        self.shell.run_cell(raw_code, store_history=False)

        #import time
        #time.sleep(2)

ip = get_ipython()
ip.register_magics(MyMagics)

在下一个单元格中执行:

%lmagic

将不显示任何输出。但是,如果我增加了一段短暂的睡眠时间(通过取消注释代码段中的两行),则可以观察到它是暂时显示的,然后消失了。我假设异步函数调用和渲染起着作用。

经过以下测试: Jupyter Notebook 5.7.8,IPython 7.4.0

有什么解决办法吗?

朱利安

0 个答案:

没有答案