【问题标题】:How to start IPython Notebook with a specified namespace如何使用指定的命名空间启动 IPython Notebook
【发布时间】:2012-06-13 16:37:42
【问题描述】:

我有一个用 Python 编写的基于 GUI(TraitsUI/PyQt/Envisage)的应用程序。我想生成一个 IPython Notebook,我在其中公开了一个小 API 和一些对象。这些对象包括一个 SQLAlchemy 会话和一堆 SQLAlchemy 模型。

我看了很多,但我找不到任何这样的例子。我可以开始记事本了:

from IPython.frontend.html.notebook import notebookapp
app = notebookapp.NotebookApp.instance()
app.initialize()
app.start()

而且效果很好(虽然我更喜欢'start'是非阻塞的......我假设如果需要我可以在另一个线程中执行它),但我无法更改命名空间。

我也发现了这样的例子:

from IPython.zmq.ipkernel import IPKernelApp

namespace = dict(z=1010)

kapp = IPKernelApp.instance()
kapp.initialize()

# Update the ns we want with special variables auto-created by the kernel
namespace.update(kapp.shell.user_ns)
# Now set the kernel's ns to be ours
kapp.shell.user_ns = namespace

kapp.start()

但我不确定如何从这里实际打开笔记本。

有人有什么建议吗?

谢谢!

【问题讨论】:

  • Notebook server 和 Kernel 必然在不同的进程中。您可以像在其他情况下一样将内核嵌入到命名空间中,但是需要修改笔记本服务器才能连接到现有内核。
  • 或者您可以使用Config 对象来设置kernel_cmd trait 以在内核启动时运行所需的代码以生成所需的命名空间。

标签: ipython


【解决方案1】:
>>> import IPython
>>> z=1010
>>> IPython.embed()
Python 3.5.2 (default, Oct  8 2019, 13:06:37)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.9.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: z
Out[1]: 1010

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多