I am trying to do file profiling in IPython, generate some profiling stats output and then pass it to some Python profiling GUI tools like KCachegrind. Here is my code trying to do that. All codes are executed in IPython.
# example function for profiling def factorial(n): if n == 0: return 1.0 else: return float(n) * factorial(n-1) def taylor_sin(n): res =  for i in range(n): if i % 2 == 1: res.append((-1)**((i-1)/2)/float(factorial(i))) else: res.append(0.0) return res # generate cProfile output (the stats, not the text) %prun -D prof.out x = taylor_sin(500) # do conversion using pyprof2calltree # to do it in IPython, add prefix '!' to code to make it Shell-command code !pyprof2calltree -i prof.out -o prof.calltree
And now IPython prints an error message:
!pyprof2calltree -i prof.out -o prof.calltree /bin/sh: 1: pyprof2calltree: not found
Is this saying that I haven’t add
pyprof2calltree to environment path or something like that? How to solve it?
I can run it perfectly in pure shell command. But I don’t like to switch frequently between IPython and a terminal, and I want to do all stuff just in IPython. I understand adding a prefix
! would make codes run like in shell command, but why it raise the error to me as shown above?
Jian@Home-PC:~/Dropbox/Coding/Python$ pyprof2calltree -i prof.out -o prof.calltree writing converted data to: prof.calltree Jian@Home-PC:~/Dropbox/Coding/Python$