如何在当前命名空间中获取Python交互式控制台?

16 投票
5 回答
11922 浏览
提问于 2025-04-17 00:13

我想在我的Python代码运行到一半的时候,启动一个Python的交互式控制台(REPL),可以用类似code.interact()的方式来实现。但是,code.interact()启动的控制台看不到当前命名空间里的变量。我该怎么做呢?

比如说,我有一个变量:

mystring="hello"

然后我调用:

code.interact()

接着在启动的交互式控制台里,我应该能输入mystring,然后得到"hello"的结果。这样做可能吗?我需要把code.interact()的"local"参数设置成什么吗?这个参数应该设置成什么?我应该怎么调用它呢?

5 个回答

2

另一种方法是启动调试器,然后运行 interact

import pdb
pdb.set_trace()

接着在调试器中:

(Pdb) help interact
interact

        Start an interactive interpreter whose global namespace
        contains all the (global and local) names found in the current scope.
(Pdb) interact
*interactive*
>>>
4

为了调试,我通常使用这个

from pdb import set_trace; set_trace()

这可能会有帮助

28

试试这个:

code.interact(local=locals())

撰写回答