not sure, looks okay to me
try inserting a print statement or two:
deriv = compute_deriv(poly)
numguess = 0
while abs(eval_poly(poly, x_0)) >= epsilon:
numguess += 1
x_0 = x_0 - (eval_poly(poly, x_0))/(eval_poly(deriv, x_0))
print x_0, (eval_poly(poly, x_0)), (eval_poly(deriv, x_0))
else: print (eval_poly(poly, x_0), numguess)
return
that ought to be enlightening