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

Python3.7 Conda虚拟环境中pycallgraph报错,求解决并生成函数调用关系图

解决pycallgraph在Python3下的iteritems()报错问题

问题原因

pycallgraph 1.0.1是针对Python2开发的版本,其中使用了Python2专属的dict.iteritems()方法,但Python3中该方法已被移除,替换为dict.items(),因此运行时触发AttributeError。

解决方案

方案1:升级到兼容Python3的pycallgraph版本

卸载旧版本,安装适配Python3的分支版本:

pip uninstall pycallgraph
pip install pycallgraph3

该版本是pycallgraph针对Python3的适配分支,可直接解决兼容性问题。

方案2:手动修改源码修复兼容性

找到报错的output.py文件(路径:/home/russell/anaconda3/envs/tvm-build/lib/python3.7/site-packages/pycallgraph/output/output.py),打开后将第19行的:

[setattr(self, k, v) for k, v in kwargs.iteritems()]

修改为:

[setattr(self, k, v) for k, v in kwargs.items()]

保存后重新运行代码即可。

完整可运行代码示例

需补充实际的函数追踪逻辑,示例如下:

from pycallgraph import PyCallGraph
from pycallgraph import Config
from pycallgraph.output import GraphvizOutput

# 定义要追踪的示例函数
def add(a, b):
    return a + b

def calculate():
    result = add(10, 20)
    print(f"计算结果:{result}")

if __name__ == "__main__":
    graphviz = GraphvizOutput()
    graphviz.output_file = 'regexp.png'
    config = Config(include_stdlib=True)
    
    # 用上下文管理器包裹要追踪的代码
    with PyCallGraph(output=graphviz, config=config):
        calculate()

额外注意事项

  • 确保系统已安装Graphviz命令行工具(非Python包),否则无法生成图片:
    • Ubuntu/Debian:sudo apt-get install graphviz
    • CentOS/RHEL:sudo yum install graphviz
    • macOS(Homebrew):brew install graphviz

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 08:43:10