Seems like you could write a Python script that branches two ways, either makes a venv or runs.
This doesn't seem too different from the old 'setup.py' approach of Python packaging except that the 'one script' has both a 'setup.py' in it and the real script.