2015-10-27 5 views
2

Я читал о python, и у меня есть определенные сомнения при использовании линии shebang. Когда я бегу:При запуске скрипта python из консоли какая разница между py vs python

py file_name.py 

Он выполняет сценарий, используя версию питона, который я указал в хижину линии, но когда я исполняю,

python file_name.py 

Последняя версия Python используется вместо тот, который я указал. Я хотел бы знать разницу между использованием python и py при запуске скрипта из командной строки. Моя линия shebang была #! python3.4

Имеет ли значение python или py разные значения или в конечном итоге оба одинаковы?

+1

'whereis py | xargs ls -a ' – Cyrbil

+1

' python scriptname.py' означает * "запустить' scriptname.py' с помощью интерпретатора, который запускает 'python' *. Я никогда не использовал 'py', но другой вариант - установить явный shebang (например,' #!/Usr/bin/env python3') и сделать скрипт исполняемым, тогда вы можете запустить его напрямую. – jonrsharpe

ответ

2

(Этот ответ подразумевает, что вы используете Windows, но я ожидаю, что это в основном относится и к другим операционкам тоже по модулю некоторых деталей)

«python.exe» является фактическим переводчиком. У вас есть одна для каждой версии Python в вашей системе. Какая версия запускается при запуске «python» в командной строке, зависит от вашей переменной среды и текущей рабочей директории.

"py.exe" - Python Launcher. У вас, вероятно, есть только один, даже если у вас есть несколько установок Python. Мой находится в C:\Windows. Он рассматривает сценарий, решает, какую версию он использует, и делегирует фактическое выполнение правильному интерпретатору.

1

Чтобы узнать, какая версия Python используются для каждой команды, запускать эти две команды:

python -c "import sys;print(sys.version)" 
py -c "import sys;print(sys.version)" 

Если оба показывают ту же версию, то в вашей системе они оба в настоящее то же самое. Однако один или другой может быть обновлен. Я лично рекомендую не полагаться ни на один, и называть версию Python, которую вы явно хотите использовать в своих сценариях.

+0

Я использовал этот фрагмент кода для проверки версии, которая запускается, и именно по этой причине я задал вопрос. Когда я использую 'py', была использована версия, которую я указал, но не при использовании' python'. Я хотел бы знать те небольшие различия между ними, хотя на первый взгляд оба кажутся одинаковыми. – lmiguelvargasf

+0

Вы также можете выполнить 'python -version' из командной строки. –

+1

@lmiguelvargasf: Я обратился к вашему комментарию в редакции. – dotancohen