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
- Ubuntu/Debian:
内容的提问来源于stack exchange,提问作者KevinRussell
相关产品推荐
相关产品推荐

