You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用code.interact触发TypeError:exec() globals需为dict而非内置函数/方法

解决code.interact调用时的TypeError问题

问题场景

运行以下Python代码:

import code
# ... 其他业务代码

code.interact(local=locals)

启动交互式控制台后,输入任意代码(如1+1、print("nothing works"))都会触发如下错误:

(InteractiveConsole)
>>> 1+1
TypeError: exec() globals must be a dict, not builtin_function_or_method
>>> print("nothing works")
TypeError: exec() globals must be a dict, not builtin_function_or_method

问题原因

code.interact的local参数要求传入字典类型的变量映射,作为交互式控制台的局部命名空间。但这里直接传入了内置函数locals(未加括号调用),传入的是函数对象而非字典,导致控制台执行代码时无法正确解析命名空间,触发类型错误。

解决方法

  1. 正确调用locals()获取字典
    将代码中的locals改为locals(),调用该函数获取当前环境的局部变量字典:

    import code
    # ... 其他业务代码
    
    code.interact(local=locals())
    
  2. 转为普通字典(针对函数内部等特殊场景)
    如果在函数内部调用locals(),返回的可能是特殊的只读映射对象,此时可以将其转为普通字典确保兼容性:

    import code
    
    def test():
        var = "test"
        code.interact(local=dict(locals()))
    
    test()
    

内容的提问来源于stack exchange,提问作者Michael B. Currie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 12:54:19