If using pyenv to support multiple python versions, when creating venvs, make sure to pass --copies
to it.
% python3 -m venv venv --copies
Ordinarily, venv uses symbolic links back to the current version of the python binary. A lot of tools and IDEs don’t traverse symbolic links. That flag actually copies the real binaries over to the venv.
This avoids a metric ton of hard-to-diagnose misery later on.
On Mac/iOS, Ivory is pretty dope: https://tapbots.com/ivory/