【发布时间】:2017-09-04 06:36:46
【问题描述】:
我想创建一个环绕 IPython 交互式 shell 的自定义 shell。它应该具有 IPython shell 所具有的大部分功能,除此之外,我想在它进入它下面的 IPython shell 之前预处理一些自定义命令,例如“dance”或“knock knock”。
视觉上应该是这样的:
>>> print("IPython will handle this")
"IPython will handle this"
>>> dance
"I will handle this myself"
我环顾四周,尝试了几种可能的方法,但我真的不确定......
这是我尝试过的事情:
- 子类 IPython.kernel 或类似的东西。我需要的似乎更复杂,但我尝试过但没有成功(无法真正理解它在做什么......)
- 使用
IPython.get_ipython()获取交互式IPython shell 的实例并与之进行乒乓球比赛。我真的找不到关于这个的有用文档。我发现可能有用的run_cell()函数不能执行run_cell("for i in range(10):")之类的操作,而是等待缩进的下一行。它只是抛出。 - 使用
Popen打开一个IPython 会话并与之进行乒乓球运动。我遵循了一些关于使用管道的教程,但我要么是管道坏了,要么是有线的。在我深入研究之前,绝对需要复习我的操作系统课程。
我不太确定正确的方法是什么。我记得 SageMath 也做过类似的事情,但不能真正理解他们的源代码。
任何评论都会有所帮助。在此先感谢:)
【问题讨论】:
标签: python linux shell ipython