【发布时间】:2021-09-12 11:45:35
【问题描述】:
我已经编写了以下代码字符串并尝试通过exec 方法执行它。当我仅在全局模式下运行此代码时,它运行良好。
codeRule = """import math
def fun (n):
data = n
data = data * math.pi
print(data)
return data
dd = fun(n)"""
codeObejct = compile(codeRule, 'sumstring', 'exec')
exec(codeObejct, dict(n = 10))
但我的用例需要exec 之外的dd 值,所以我使用以下参数在另一个数据帧中获取dd 值。
loc = {}
exec(codeObejct, dict(n = 10), loc)
dd = loc["dd"]
但是一旦我使用本地它就开始给我一个关于 Lib Import 的错误,例如
File "<stdin>", line 1, in <module>
File "sumstring", line 7, in <module>
File "sumstring", line 4, in fun
NameError: name 'math' is not defined
有人可以帮忙解决这个问题吗?
我已经检查了以下问题的答案,但我不知道如何在我的用例中使用它。
【问题讨论】:
-
请提供minimal reproducible example (MRE),以便没有所有与手头问题无关模块的人可以解决您的问题。
-
好的,马蒂诺,让我更新一下。
-
@martineau,完成。请对此进行调查。
标签: python compilation exec lib