Of course, relevant xkcd.
I'm sure you'll get many different answers, but after struggling for months with environment management when I first started coding, I finally ended up finding that pyenv was the best option for me.
You can use Homebrew to install pyenv and virtualenv.
Pyenv installation instructions for MacOS: https://github.com/pyenv/pyenv#homebrew-in-macos
Virtualenv installation instructions for MacOS: https://github.com/pyenv/pyenv-virtualenv
Of course you'll have to make sure to carefully follow the installation instructions for whatever terminal shell you use, zsh, bash, etc. The linked GitHub installation instructions explain this.
After you've successfully installed the two, you can use pyenv to install specific base versions of Python, e.g., pyenv install 3.8.8.
You can then use virtualenv to create specific closed environments for each Python version. I use this frequently for building/testing with packages that aren't compatible with one another.
You can activate the environments with commands as so: pyenv virtualenv 3.8.8 app_build, and to create another one, pyenv virtualenv 3.8.8 app_testing.
Then you can activate each environment for usage in your terminal or IDE by using pyenv activate app_build, etc. After activation, you can install packages, and they will only be installed in the activated environment.
Pyenv integrates very nicely with Visual Studio Code as well. I can speak more to that if you're interested.
I used anaconda for a while, but it wasn't well suited for app development/PyQt5, so I abandoned it. I personally like much pyenv much more, as I feel more in control with it.