Создание скриптов. Работа с IDE#

Файлы с исходным кодом#

До этого момента мы с вами работали только в интерактивной подсказке и jupyter ноутбуках, но основной способ программирования на python (как и в большинстве других языков программирования) — составление программы, состоящей из файла/файлов с исходным кодом. Исходный код обычно хранится в файлах с расширением .py, а при их исполнении интерпретатор python (обычно CPython) считывает и исполняет команды из файла по строке.

Python файлы часто разделяют на скрипты и модули. Скрипт — то, что непосредственно предназначено для исполнения, а модуль — предназначен для импортирования в скрипте и в других модулях.

При решении исследовательских задач часто удобно бывает начать разработку в jupyter notebook: в интерактивном режиме удобно анализировать и визуализировать данные, прототипировать и тестировать функционал. По завершении такого этапа часто образовывается логически целостная программная единица, которая а) может пригодится и в других проектах б) в дальнейшем будет исполняться множество раз (например, на других наборах данных). Тогда гораздо удобнее перетащить код из jupyter ноутбука в файл .py (с возможным разделением на модули), который может быть импортирован в других программах в качестве модуля или запущен интерпретатором python без необходимости загружать jupyterlab и вручную исполнять ячейки.

Конвертирование .ipynb в .py#

Вообще говоря, файл .ipynb — файл в формате json. Внутри этого файла можно найти список ячеек cells, элементы которого структуры, соответствующие каждой ячейке ноутбука. Например, у исполняемых ячеек с кодом есть поля source и outputs. Т.е. jupyter notebook содержит в себе исходный код всех ячеек и можно конвертировать его в файл .py записав в текстовый файл исходный код всех ячеек друг под другом.

Note

В поле outputs ячейки могут храниться изображения и другие не текстовые данные. Из-за этого такие файлы хуже работают с системами контроля версий (например, git), действие которых основано на вычислении разницы (diff) между двумя версиями файлов. В текстовых файлах можно выделить логические единицы (например, строки) и отслеживать появление/удаление таких единиц между версиями файлов. Для бинарных данных невозможно выделить таких единиц для произвольного содержимого файла.

Если скрипт уже открыт в jupyter, то для конвертирования достаточно в меню выбрать File \(\to\) Download as \(\to\) Python (.py).

../../_images/convert.png

Можно добиться похожего эффекта в командной строке не открывая ноутбук командой

jupyter nbconvert --to script notebook.ipynb

где notebook.ipynb — имя ноутбука.

Warning

  1. необходимо следить, чтобы магические команды jupyter (такие, как %matplotlib inline) не попали в исходных код.

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

Tip

При таком способе конвертации в скрипт попадают комментарии, отделяющие исходный код разных ячеек. С помощью многократного нажатия комбинации клавиш shift+M можно склеить ячейки ноутбука в одну большую.

Среды разработки#

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

  • Spyder-IDE, бесплатный, предназначен для научного программирования,

  • PyCharm, есть бесплатная версия (community edition) с ограниченным функционалом, предназначен для разработки полномасштабных приложений;

  • Visual Studio Code, бесплатный, не позиционируется в качестве полноценной среды разработки, а только в качестве продвинутого текстового редактора.

  • многие другие;

Командная строка#

windows#

Короткий обзор команд навигации по файловой системе в cmd Windows.

Команда

Действие

cd path

перейти в указанную папку на том же диске

cd ..

перейти на уровень выше

D:

перейти на другой диск

dir

Вывод содержимого текущей папки. dir /D более лаконичный вывод

Если python добавлен в переменную среды PATH, то для запуска скрипта из cmd достаточно написать команду

python path/to/script.py

Mac OS#

TODO

Unix#

Короткий обзор команд навигации по файловой системе в командной строке unix-like операционных систем.

Команда

Действие

cd path

перейти в указанную папку на том же диске

cd ..

перейти на уровень выше

ls

Вывод содержимого текущей папки.

запуск скрипта:

python path/to/script.py