Книга: Как устроен Python. Гид для разработчиков, программистов и интересующихся
Назад: 3. Интерпретатор
Дальше: 5. Запись и чтение данных

4. Запуск программ

Хотя интерактивный интерпретатор может принести пользу в ходе разработки, вам (и другим разработчикам) неизбежно потребуется запускать программы вне REPL. В Python и это делается просто. Чтобы запустить программу Python с именем hello.py, откройте окно терминала, перейдите в каталог с программой и введите команду

$ python3 hello.py

ПРИМЕЧАНИЕ

В этой книге перед командой, при ее выполнении из командной строки, будет ставиться символ $. По этому символу команды можно отличить от входных данных интерпретатора (>>> или ...) и содержимого файлов (без префикса).

ПРИМЕЧАНИЕ

Скорее всего, попытка выполнения приведенной выше команды python3 hello.py завершится ошибкой, если в системе нет файла с именем hello.py.

В главе 3 мы использовали REPL для выполнения программы «hello world»; как выполнить ту же программу в автономном режиме? Создайте файл с именем hello.py в своем любимом текстовом редакторе.

Включите в файл hello.py следующую команду:

print("hello world")

Сохраните файл, перейдите в каталог с этим файлом и выполните файл (в данном случае термины «выполнить» и «запустить» считаются эквивалентными; иначе говоря, введите python3 перед именем файла, и интерпретатор Python обработает код за вас).

4-1.tiff 

Рис. 4.1. Среда IDLE запущена, и в ней открыто новое окно редактора (с именем Untitled, потому что файл еще не был сохранен)

ПРИМЕЧАНИЕ

Команда python3 без параметров запускает интерпретатор. Команда python3 имя_файла.py выполняет этот файл.

Если вам удалось запустить файл hello.py, команда выведет текст hello world.

4.1. Запуск программ из IDLE

Программы также можно редактировать и запускать в IDLE. Сначала запустите IDLE: либо щелкните на значке приложения на своем компьютере, либо выполните команду

$ python3 -m idlelib.idle

При запуске IDLE вы увидите окно оболочки (shell) — еще одной разновидности REPL языка Python. Если ввести код, Python немедленно выполнит его. Чтобы создать программу, необходимо создать файл, содержащий код Python. Для этого откройте меню File и выберите команду New File. На экране появляется новое окно — причем это не окно оболочки, а окно редактора. Обратите внимание: окно пустое и в нем нет приглашения Python. В этом окне вводится код Python.

4-2.tiff 

Рис. 4.2. Код, введенный в окне редактора

4-3.tiff 

Рис. 4.3. Результат выполнения программы «hello world» в IDLE

Введите код в этом окне. Так как мы рассматриваем пример с программой «hello world», введите команду

print("hello world")

Вы заметите, что IDLE выделяет print и «hello world» разными цветами. Это выделение, называемое цветовым выделением синтаксиса, делает код более понятным. Теперь код нужно запустить. Проще всего сделать это нажатием клавиши F5. Другой вариант — открыть меню Run и выбрать команду Run Module. IDLE предложит сохранить файл. Сохраните его под именем hello.py. IDLE передает фокус окну оболочки, выводит строку с сообщением о перезапуске оболочки, а затем выводит сообщение hello world.

Результат вроде бы тривиальный, но окно оболочки теперь связано с состоянием вашего кода. В данном случае программа только выводит текст на экран, так что особого состояния у нее нет. Но в будущих примерах мы покажем, как воспользоваться механизмом интеграции редактора с оболочкой и создать среду, в которой можно быстро опробовать код, посмотреть результаты и проанализировать вывод программы.

Если вам понадобится информация о навигации в режиме командной строки, обратитесь к приложению А.

4.2. Усовершенствования для UNIX

На платформах UNIX (в частности, к этой категории относятся Linux и OS X) такие файлы, как hello.py, часто называются сценариями (scripts). Сценарий тоже является программой, этот термин часто используется для того, чтобы отличать интерпретируемый код от машинного. В данном случае сценарии являются интерпретируемым кодом, а результат компиляции такого языка, как C, представляет собой машинный код.

ПРИМЕЧАНИЕ

Также часто приходится слышать о «сценариях командной строки», «сценариях Perl», «сценариях Python» и т.д. Чем сценарий Python отличается от программы Python? Ничем, дело только в семантике. Сценарием Python обычно называется программа Python, запускаемая из командной строки, тогда как программой Python называется любая программа, написанная на Python (от простейших однострочных до эффектных приложений с графическим интерфейсом или служб корпоративного уровня).

В средах Unix предусмотрен удобный механизм самостоятельного запуска сценариев. Если разместить в первой строке файла символы #!, за которыми указывается путь к интерпретатору, а для файла установить бит исполнения, такой файл можно будет запускать сам по себе, то есть без ручного запуска интерпретатора.

Чтобы сценарий выполнялся с интерпретатором Python, указанным в переменной среды, файл hello.py должен выглядеть так:

#!/usr/bin/env python3

print("hello world")

ПРИМЕЧАНИЕ

Новая первая строка приказывает командному интерпретатору, который выполняет файл, выполнить остаток файла с исполняемым файлом #!/usr/bin/env python3. (Сценарии командного интерпретатора обычно начинаются с #!/bin/bash или #!/bin/sh.) Сохраните файл hello.py с новой первой строкой.

СОВЕТ

Запись #!/usr/bin/env — удобное обозначение первого исполняемого файла python3, найденного в переменной среды PATH. Так как исполняемый файл python3 хранится в разных местах на разных платформах, такое решение получается кросс-платформенным. В системе Windows эта строка игнорируется. Если только у вас нет полной уверенности в том, что вы хотите запустить конкретную версию Python, вероятно, стоит использовать запись #!/usr/bin/env.

Жестко закодированные пути вида

• #!/bin/python3

• #!/usr/bin/python3.3

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

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

$ chmod +x hello.py

Команда устанавливает для файла бит исполнения. В среде UNIX существуют разные разрешения (устанавливаемые при помощи соответствующих битов) для чтения, записи и исполнения файла. Если для файла установлен бит исполнения, то при запуске файла среда UNIX проверяет его первую строку и выполняет файл так, как указано.

СОВЕТ

Если вы захотите узнать, что делает команда chmod, вызовите справку по ней командой man:

$ man chmod

 

Теперь для выполнения файла достаточно ввести его имя в терминале и нажать Enter. Введите

$ ./hello.py

Команда должна запустить вашу программу (или сценарий). Обратите внимание на символы ./ перед именем программы. Обычно при вводе команды в терминале среда ищет исполняемый файл в PATH (переменная среды, определяющая, в каких каталогах хранятся исполняемые файлы). Если только переменная PATH не содержит . (или родительский каталог hello.py), перед именем необходимо указать ./ (или полный путь к исполняемому файлу). В противном случае вы получите сообщение об ошибке:

$ hello.py

bash: hello.py command not found

Да, вся эта работа была проделана только для того, чтобы вам не приходилось вводить команду python3 hello.py. Почему? Прежде всего потому, что вашей программе было бы лучше называться hello (без суффикса .py.). А может быть, вы захотите разместить программу в PATH, чтобы ее можно было запустить в любой момент. Назначив файл исполняемым и добавив символы #!, можно создать файл, который выглядит как обычный исполняемый файл. Такому файлу не нужно расширение .py, а для его выполнения не придется вводить команду python3.

4.3. Итоги

Запускать программы Python несложно. Запуск не требует долгого этапа компиляции. От вас потребуется лишь сообщить Python программу, которую вы хотите запустить. Во многих редакторах также предусмотрена возможность выполнения кода Python. Вам стоит выяснить, как это делается в вашем любимом редакторе. В IDLE это просто: достаточно нажать клавишу F5.

4.4. Упражнения

1. Создайте файл hello.py, содержащий код из этой главы.

2. Запустите hello.py из терминала.

3. Запустите hello.py из IDLE.

4. Если вы предпочитаете работать в другом редакторе, запустите hello.py из него.

5. Если вы работаете на платформе Unix, создайте файл с именем hello. Добавьте в него код «hello world» и внесите необходимые изменения, чтобы код можно было выполнить командой

./hello

Назад: 3. Интерпретатор
Дальше: 5. Запись и чтение данных