I think you want to use:
u, eps = ufl.split(w)
rather than:
u, eps = w.split()
see this discussion for instance on the difference between the two: Function.split() vs Split(Function)
Also, in your particular problem, wouldn’t you want your viscous strain to be defined on a DG space ?