2016-09-08 2 views
1

Иногда я вижу #!/usr/bin/python2 и #!/usr/bin/python3, а не просто #!/usr/bin/python. Я получаю призыв к этому подходу, вы можете явно сказать, нужен ли вам Python 2 или 3, не выполняя некоторую странную проверку версий.Является ли "python2"/"python3" безопасным для скриптинга shebang?

Являются ли эти python2 и python3 стандартными? Будут ли они работать везде? Или это рискованно?

Я только что подтвердил, что у меня есть python2 и python3, но я нахожусь на Cygwin, поэтому я бы не подумал, что это означает, что это обязательно одно и то же для многих других.


Примечание: Для тех, кто рассматривает #!/usr/bin/python с или без номера, более важная вещь, чтобы помнить о том, что python даже не всегда в /usr/bin (FreeBSD и OSX, например), так что используйте #!/usr/bin/env python если вы хотите большую мобильность.

Тогда просто молитесь, чтобы env находится в /usr/bin.

+0

у вас будет только это, если у вас установлены МНОЖЕСТВЕННЫЕ версии python и нужно явно вызвать тот или иной. –

+1

Возможно, стоит сказать, что вы должны использовать 'env' в своем shebang, если хотите больше переносимости относительно исполняемых целей. Не каждая установка python по умолчанию находится в '/ usr' (я могу сказать, что этого не происходит в FreeBSD и Mac OSX). – farsil

+0

@farsil спасибо, я могу добавить это. У меня есть один вопрос, хотя об использовании 'env' в shebangs, является' #!/Usr/bin/env ... 'правильным или' env' установлен в разных местах также ? –

ответ

1

В одной точке отсчета - У меня нет python2 исполняемого файла на моей системе:

$ python2 
-bash: python2: command not found 

Так что я бы определенно не считаю этот быть портативным. Очевидно, что я все еще мог запустить сценарий, выбрав исполняемый файл в явном виде:

python2.7 your_script.py 

Или символическую ссылку python2 в python2.7, но дело в том, что она не будет работать из коробки для меня (и я думаю, для многих других пользователей).

+0

Из любопытства, какая ОС? –

+0

@CaptainMan - OS-X – mgilson

+0

Также из любопытства, является «python2.7'« стандартным »или другой удобной софт-ссылкой, созданной пакетом? –

Смежные вопросы