In order to run a python script under bash and most other Unix or Linux systems without invoking the python executable manually, you need to include the python path in a "shebang" (#!) at the top of the script.
That's easy enough in a standard environment:
#!/usr/bin/python3
But in a python virtual environment (venv) that's going to be a problem because the binary will be "python", not "python3", and although the latest version of venv was designed to detect the default python binary in the environment, it's going to do as instructed if given told to use "python3" in the shebang.
The answer is to use the env utility to identify the python executable:
#!/usr/bin/env python
This is also what you'd do if you're using python on pyenv.
and then switch the name of the python binary as needed. And yes, this also works on Windows.