Ipython QtConsole %edit



在IPython中使用QtConsole中的神奇函数%edit时,调用不会阻塞,也不会执行保存的代码。但是它会保存一个临时文件…

我认为这是由于GUI编辑器和不确定性的预期行为,无论原因是无法与子进程(pyZMQ?)通信。

你认为混合%edit/%run魔法的最好方法是什么?

我不介意调用两个不同的命令(一个用于编辑,另一个在我保存并执行后是安全的)。但是,这些命令需要一种方法来同步这个目标文件位置,或者有人来持久化存储,并且可能需要某种可预测地生成文件名的粗略形式,以便您可以一次编辑多个文件,并任意执行。会话持久化不是必须的。

写我自己的魔法有什么好处吗?

希望我们能尽快编辑宏,这样就足够让它工作了。

你应该能够做%edit filename.py%run filename.py。不阻塞行为是预期的,IIRC是由于技术原因。不是不可逾越,而是困难重重。

如果你愿意,你可以定义你自己的魔法,欢迎改进。

希望我们能尽快编辑宏,这样就足够让它工作了。

因此,PR也是受欢迎的。我想作为一个解决方案/选项,你可以%load macro,它会把宏输入n+1,编辑它并重新定义它,这可能是一个很好的扩展细胞魔法%%macro macroname

如果您的输入(来自QtConsole)中有一些可执行代码,您可以键入

%edit 1-5

这将触发编辑器,创建一个临时文件(自动管理),并加载输入行。这几乎是足够的,现在如何检索临时文件的名称实用?

我在Stdout上看到了打印语句,但它在QtConsole上不可见。也许可以重定向标准输出来捕获该行,但如果您对标准输出执行其他操作,那么这可能不是一个选项。

如果我可以检索刚刚创建的完整路径名,这将是蛋糕。把它放在有魔法的人能找到的地方。然后在准备好后发出后续命令,将名称从堆栈中弹出,将其加载到宏中,然后运行。所有这些都有2个输入命令,没有名字要记住(除非你想再次找到并使用该宏,但对于1个镜头的东西…)

如何捕获或检索该临时文件的路径?

最新更新