Unless I'm making a "project" that I want to eventually package into an application or library, I prefer to just use pyenv with venv. Pyenv lets me pick my Python interpreter which I then use in conjunction with venv to create a virtual environment. For example, creating a venv with Python 3.9:
pyenv local 3.9
python -m venv my-env
source my-env/bin/activate
pip install [whatever I need]