Ответы:
Некоторые люди могут использовать другой Python (Perl и т. Д.), Чем системный. /usr/bin/env pythonзапускает версию, настроенную как текущую, возможно, делая скрипт более переносимым.
С другой стороны, как сообщается, некоторых систем нет /usr/bin/env. Кроме того, вы не можете использовать #!/usr/bin/env foo xв качестве замены #!foo x, потому что foo xбудет интерпретироваться как один аргумент. Так что ценность такого подхода спорна.
info coreutils 'env invocation'я вижу, эта форма вызова проверяет, что это внешний двоичный файл, а не встроенный в оболочку, но нет никаких признаков того, как env pythonон будет отличаться python?
PATHвероятно, включает в себя в /usr/local/binпервую очередь. Если кто-то установил Python вручную, он envбудет вызывать его, тогда как #!/usr/bin/pythonобойдется.
virtualenvэто довольно популярный инструмент, и он устанавливает исполняемый файл Python в рабочем каталоге. Вам понадобится envхитрость, чтобы заставить его работать правильно.
env pythonже, как python. Однако проблема в том, что вы не можете написать подобный шебанг #!python: вам нужно указать полный путь.