pyenvがversionをswitchしてくれない
謎にroot dirに存在していた.python-versionが原因でした。これに何も記載がなく、変更する対象がないため、変更されないという感じだったようです。ので、これを消すことで解決しました。
rm ~/.python-version
詳細
pyenvのドキュメントによると、pyenvはglobalの.versionファイルを見に行く前に、.python-versionをcurrent dirとroot dirの間で、再起的に探しに行くようです。そのため、一番今のdirに近い.python-versionにversionが指定されていないと、versionのswitchができなくなる、といった形っぽいです。
また、shim executableがpathに入ってない、説もありましたが、これでは解決できなかったです。そもそもwhich pythonがpyenvのpythonを示していたので、pathの設定はうまくいってそうでした。