我想创建一个封装IPython交互式shell的自定义shell。它应该具有IPython shell的大部分功能,除此之外,我还想在它进入IPython shell之前预先处理一些自定义命令,如“dance”或“knock knock”。如何编写IPython shell的包装?
视觉上它应该是这样的:
>>> print("IPython will handle this")
"IPython will handle this"
>>> dance
"I will handle this myself"
我环顾四周,试图可能做一些方法,但我真的不知道......
我这里还有我试过的东西:
- 子类IPython.kernel或类似的东西。这似乎更复杂,我需要和我已经尝试过没有成功(不能真正理解它在做什么...)
- 使用
IPython.get_ipython()
获得交互式IPython外壳的实例和乒乓球与它。我找不到有用的文档。我找到的run_cell()
函数可能有用,但不能执行run_cell("for i in range(10):")
之类的操作,并等待缩进的下一行。它只是抛出。 - 使用
Popen
打开IPython会话并与之乒乓。我遵循了几个关于使用管道的教程,但是我要么弄坏管道,要么接线。在深入研究之前,肯定需要查看我的操作系统类。
我不太确定什么是正确的方法。我记得SageMath做类似的事情,但不能很好地理解他们的源代码。
任何意见将有所帮助。在此先感谢:)