我想一次使用多个共享相同名称空间的ipython笔记本。目前是否有(ipython-1.1.0)的方法可以做到这一点?

我尝试在同一ipython内核上创建不同的笔记本,但是这些笔记本不共享名称空间。另外,我已经能够使用Using IPython console along side IPython notebook中的答案在同一名称空间的笔记本电脑旁边使用终端控制台,但是我找不到与--existing参数等效的笔记本电脑。

非常感谢

最佳答案

不幸的是,这不再起作用,您将错误消息ipython.kernel替换为ipython.parallel。

一个比上述方法更不优雅的方法是,将第273行的IPython / frontend / html / notebook / kernelmanager.py更改为

kernel_id = self.kernel_for_notebook(notebook_id)



kernel_id = None
for notebook_id in self._notebook_mapping:
    kernel_id = self._notebook_mapping[notebook_id]
    break


对于Anaconda python,将kernelmanager.py中的start_kernel替换为

def start_kernel(self, kernel_id=None, path=None, **kwargs):
    global saved_kernel_id
    if saved_kernel_id:
        return saved_kernel_id
    if kernel_id is None:
        kwargs['extra_arguments'] = self.kernel_argv
        if path is not None:
            kwargs['cwd'] = self.cwd_for_path(path)
        kernel_id = super(MappingKernelManager, self).start_kernel(**kwargs)
        self.log.info("Kernel started: %s" % kernel_id)
        self.log.debug("Kernel args: %r" % kwargs)
        self.add_restart_callback(kernel_id,
            lambda : self._handle_kernel_died(kernel_id),
            'dead',
        )
    else:
        self._check_kernel_id(kernel_id)
        self.log.info("Using existing kernel: %s" % kernel_id)
    saved_kernel_id = kernel_id
    return kernel_id


并添加

    saved_kernel_id = None


以上

    class MappingKernelManager(MultiKernelManager):


真正的IPython专家,请提供正确的修复程序。很自然,许多使用笔记本电脑的人都希望能够共享内核,因为一个笔记本电脑很快会变得太大而无法与单个复杂的应用程序一起使用,因此将应用程序分解为多个笔记本电脑变得更加容易。

另外,大师们在聆听时,像在Mathematica中一样具有折叠展开功能会很好,因此您只能查看笔记本中要关注的部分,而可以缩小其余部分。

关于ipython - 在多个ipython笔记本之间共享 namespace ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20091154/

10-16 15:58