我有一个可以运行并接受用户输入做出决定的python脚本。基于输入,我想让用户控制python repl。这是一个示例:
def func():
# hand over control to the user
breakpoint()
while True:
print('What would you like to do?\nq: quit\ni: interact')
i = input()
if i=='q':
break
elif i=='i':
func()
else:
print(f'invalid command: {i}')
使用例如ipython3调用此代码段,提示用户输入。当用户按下i时,将调用func()
,这时我希望用户能够键入python命令,例如print(i)。
我目前的最佳解决方案是设置一个断点,然后用户可能需要键入r
才能到达正确的帧,然后必须键入interact
。这几乎可以接受,但是我希望我的用户不需要知道我正在使用调试器为他们提供交互式控件,而是希望直接给他们一个ipython提示。
我看了10年前的这篇文章:Jump into a Python Interactive Session mid-program? rz。的评论看起来很有趣,但是对于我来说,按原样使用他的答案似乎已经发生了很大变化,此外,可能还有更新的方法做事。