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

调试pytest单元测试时遇exec调用缺括号语法错误,求原因

关于pytest中"Missing parentheses in call to 'exec'"错误的原因分析

这个错误我之前帮不少开发者排查过,核心原因大多和Python版本兼容或者语法误用有关,具体可以分成这几个情况:

  • Python版本差异导致的语法不兼容:这是最常见的触发原因。Python2和Python3对exec的定义完全不同——在Python2里exec是一条语句,写法是exec code;但到了Python3,exec变成了内置函数,必须以带括号的函数形式调用,也就是exec(code)。如果你的测试代码(或者pytest依赖的某个底层库代码)还保留着Python2风格的exec写法,却在Python3环境下运行,就会直接抛出这个语法错误。

  • pytest或其依赖库版本与Python版本不匹配:有时候问题不是出在你的测试代码里,而是你安装的pytest或者它依赖的第三方库(比如pluggy、attrs这类常用组件)版本太旧。这些旧版本的库可能还在使用Python2的语法规范,当你在Python3环境下运行pytest时,执行到这些库中的exec代码就会触发错误。这种情况建议你先检查当前pytest的版本,然后尝试更新到适配你当前Python版本的最新稳定版,比如用pip install --upgrade pytest命令更新。

  • 测试代码中误用了exec语法:如果你在自己的测试代码里手动写了exec相关的逻辑,不小心忘记给exec加上括号,也会触发这个错误。比如在Python3里写了:

    exec "print('测试内容')"
    

    这就是错误的写法,正确的应该是:

    exec("print('测试内容')")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:52:44