如何使用指定的命名空间启动IPython Notebook

如何使用指定的命名空间启动IPython Notebook,ipython,Ipython,我有一个用Python编写的基于GUI的(TraitsUI/PyQt/Envisage)应用程序。我想创建一个IPython笔记本,在其中我公开了一个小API和一些对象。这些对象包括一个SQLAlchemy会话和一组SQLAlchemy模型 我找了很多,但我找不到任何这样的例子。我可以启动一个笔记本: from IPython.frontend.html.notebook import notebookapp app = notebookapp.NotebookApp.instance() ap

我有一个用Python编写的基于GUI的(TraitsUI/PyQt/Envisage)应用程序。我想创建一个IPython笔记本,在其中我公开了一个小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()
但我不知道如何从这里打开笔记本

有人有什么建议吗


谢谢

笔记本服务器和内核必须处于不同的进程中。您可以像在其他情况下一样将内核嵌入到命名空间中,但是需要修改笔记本服务器,以便能够连接到现有内核。或者,您可以使用
Config
对象设置
Kernel\u cmd
特征,在内核启动时运行所需代码以生成所需命名空间。
>>> 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