首页 > 解决方案 > 问题:“名称'_eval_expr'未定义”即使它应该是

问题描述

所以我的代码遇到了一些问题,我问了一些程序员朋友可能出了什么问题,因为在来这里之前我无法弄清楚,但他们也不知道。

从理论上讲,它应该可以工作,实际上我从我拥有的另一个项目中复制了其中的一半,并且在那里工作正常,但由于某种原因在此代码中没有。使用 github api 获取代码然后运行该代码,但我得到错误

# code

async def parse_str_code(files):
    for f in get_files(files):
        if isinstance(f.encoding, str):
            code = format_content(f.content)
            fn_name = "_eval_expr"
            code = code.strip("` ")
            code = "\n".join(f"    {i}" for i in code.splitlines())
            body = f"async def {fn_name}():\n{code}"
            print(body)
            parsed = ast.parse(body)
            body = parsed.body[0].body
            insert_returns(body)
            env = {}
            exec(compile(parsed, filename="filename", mode="exec"), env)
            await eval(f"{fn_name}()", d)


asyncio.run(parse_str_code(files))

# error

Traceback (most recent call last):
  File "D:/namepy/python/project_running_code_with_github/main.py", line 73, in <module>
    asyncio.run(parse_str_code(files))
  File "D:\name\python\Python\Python38-32\lib\asyncio\runners.py", line 43, in run
    return loop.run_until_complete(main)
  File "D:\name\python\Python\Python38-32\lib\asyncio\base_events.py", line 608, in run_until_complete
    return future.result()
  File "D:/name/python/project_running_code_with_github/main.py", line 68, in parse_str_code
    await eval(f"{fn_name}()", d)
  File "<string>", line 1, in <module>
NameError: name '_eval_expr' is not defined

标签: pythonpython-3.x

解决方案


推荐阅读