There are two possible issues going on here. Firstly as noted in the answer by knl any linear combination of eigenvectors corresponding to degenerate eigenvalues is also an eigenvector, as shown in that answer. However even for the non-degenerate case eigenvectors may vary between different invocations of a diagonaliser even if the input matrix is the same. This is because there is an arbitrary random phase which the routine is free to "pick", and may vary from call to call. To see this consider the eigenvalue equation
$${\bf A} {\bf q}=\lambda {\bf q}$$
Here $(\lambda,{\bf q})$ is clearly the eigenpair. Let's multiply this from the left with a diagonal matrix ${\bf D}$ where all the diagonal elements are the same and of the form $D_{ii}=e^{i\phi}$. Such matrices commute with any other matrix so it follows that
$${\bf DAq}={\bf A(Dq)}=\lambda ({\bf Dq})$$
Then let ${\bf q^{'}={\bf Dq}}$ we can see that
$${\bf q^{'}}^{\dagger} {\bf q^{'}}={\bf q^{\dagger}D^{\dagger}Dq}={\bf q^{\dagger}q}$$
because of the form of ${\bf D}$. Thus ${\bf q^{'}}$ is also an eignevector of ${\bf A}$, and further has the same normalisation, and thus is a perfectly valid result for (in your case) zheev to return whatever the value of $\phi$.
Because of this about the only good way to check an eigenvector is to make sure ${\bf q^{\dagger}Aq}=\lambda$ to whatever tolerance is acceptable; visual inspection og the elements doesn't work. Even in the real case there is still a factor of -1 that can be applied.