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

Python使用exec执行外部脚本传参报NameError如何解决

核心问题原因

你对exec方法的传参逻辑理解有误。exec的第二个参数是指定执行目标代码时使用的全局命名空间字典,该字典的键就是目标代码(即prova.py)可以直接访问的全局变量名,值为对应的变量内容。

你当前的写法是把构造好的var字典本身直接作为全局命名空间传入,而这个字典是通过enumerate生成的,键都是整数索引,不存在名为var的键,因此prova.py运行时找不到var变量,抛出NameError。

解决方法

你需要构造一个新的全局命名空间字典,把要传递的var按「变量名: 变量值」的格式存入其中,再传给exec即可,示例代码如下:

# 构造需要传递的var变量
var = {key:val for key, val in enumerate(lista_gp_todict)}
# 构造exec使用的全局命名空间
exec_globals = {"var": var}
# 传入命名空间执行prova.py
exec(open("prova.py").read(), exec_globals)

如果需要同时让prova.py可以访问当前try.py里的其他全局变量,可以合并当前全局字典:

exec_globals = globals() | {"var": var}

内容的提问来源于stack exchange,提问作者Dark2018

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 08:45:00