(Asking a question in order to answer it, having been initially puzzled by this. Other answers obviously welcome.)
Using #!/usr/bin/env python is a common trick to allow the python interpreter to be found using a PATH lookup, rather than hard-coding the path to python. It could be convenient to be adapt this to add a PATH=... argument to env, in order to hard-code a list of candidate directories while not hard-coding a single exact path. (This would make use of the fact that env uses the specified PATH variable when locating python, aside from passing it to the python process.)
For example (in test.py):
#!/usr/bin/env PATH=/opt/python/bin:/usr/bin:/bin python
import sys
print(sys.executable) # show which executable it found
But if you try this, although the command works if executed explicitly from the shell command line:
$ echo $PATH
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ /usr/bin/env PATH=/opt/python/bin:/usr/bin:/bin python ./test.py
/opt/python/bin/python
it fails when trying to run it via the shebang:
$ ./test.py
[hangs - infinite loop]
Why is this, and what can be done instead?