Глава 2. Настройка вашей среды разработки

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

Исходный код CPython это около 6 процентов Python (из которых основную часть составляет его тестирование) и 24 процента C. Остаток это смесь прочих языков программирования.

IDE или редактор?

Если вы ещё пока не определились с тем какую среду разработки применять, имеется одно решений, которое вам следует вначале принять: будете ли вы применять встроенную среду разработки (IDE, integrated development environment) или редактор кода.

  • IDE имеет целью некий конкретный язык программирования и цепочки инструментов. Большинство IDE обладают встроенными тестированием, проверкой синтаксиса, контролем версий и компиляцией.

  • Редактор кода позволяет вам изменять файлы кода, причём вне зависимости от языка программирования. Большинство редакторов кода это простые текстовые редакторы с выделением синтаксиса.

По причине своей природы полной укомплектованности, IDE часто потребляют больше аппаратных ресурсов. Поэтому, если вы обладаете ограниченной оперативной памятью (менее 8ГБ), тогда рекомендуется кодовый редактор.

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

Бесплатными или за некую цену имеются доступными сотни редакторов и IDE. Вот некоторые из обычно применяемых IDE и редакторов, приспособленных под разработку CPython:

Таблица 2-1. Подходящие для разработки CPython IDE и редакторы
Приложение Стиль Поддержка

Microsoft Visual Studio Code

Редактор

Windows, macOS и Linux

Atom

Редактор

Windows, macOS и Linux

Sublime Text

Редактор

Windows, macOS и Linux

Vim

Редактор

Windows, macOS и Linux

Emacs

Редактор

Windows, macOS и Linux

Microsoft Visual Studio

IDE (C, Python и прочие)

Windows

PyCharm by JetBrains

IDE (C, Python и прочие)

Windows, macOS и Linux

CLion by JetBrains

IDE (C, Python и прочие)

Windows, macOS и Linux

Некая версия Microsoft Visual Studio также доступна для Mac, однако она не поддерживает Python Tools для Visual Studio или компиляции C.

В последующих разделах мы исследуем этапы настройки для следующих редакторов и IDE:

  • Microsoft Visual Studio

  • Microsoft Visual Studio Code

  • JetBrains CLion

  • Vim

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

Монтаж Visual Studio

Самая новая версия Visual Studio, Visual Studio 2019, обладает встроенной поддержкой кода Python и C в Windows. Я рекомендую пользоваться им для всех примеров и упражнений из этой книги. Если вы уже обладаете установленным Visual Studio 2017, тогда это также должно работать.

[Замечание]Замечание

Никакие платные функциональные возможности Visual Studio не требуются для компиляции CPython или завершения этой книги. Вы можете пользоваться бесплатной Редакцией Сообщества.

Тем не менее, руководимая профилем оптимизация сборки профиля требует Профессиональной редакции или более высокой.

Visual Studio бесплатно доступен с вебсайта Microsoft’s Visual Studio.

После того как вы выгрузите необходимый установщик Visual Studio, у вас будет запрошен выбор того какие компоненты вы желаете установить. Для этой книги вам требуются следующие компоненты:

  • Рабочий поток Python development

  • Необязательные Python native development tools

  • 64- битный Python 3 (3.7.2)

Если у вас уже имеется установленным Python 3.7, вы можете отменить выбор Python 3 64-bit (3.7.2). Если вы желаете сберечь дисковое пространство, вы также можете отменить выбор любых прочих необязательных функциональных возможностей.

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

После того как установка выполнена, кликните Launch чтобы запустить Visual Studio. Вы получите приглашение на то чтобы подписать его. Если у вас имеется учётная запись Microsoft, вы также сможете зарегистрироваться с ней и пропустить этот шаг.

Затем вы получите приглашение на открытие некого проекта. Вы можете клонировать репозиторий Git CPython напрямую из Visual Studio, выбрав параметр Clone or check out code.

Для местоположения необходимого репозитория введите https://github.com/python/cpython, выберите свой локальный путь и нажмите Clone.

Затем Visual Studio выгрузит некую копию CPython из GitHubпри помощи встроенного в Visual Studio Git. Этот шаг также убережёт вас от преграды в необходимости установки в Windows Git. Эта выгрузка может отнять до 10 минут.

[Совет]Совет

Visual Studio автоматически проверит наличие главной ветви. Перед компиляцией убедитесь что вы изменили её на ветвь 3.9 с той, которая настроена окном Team Explorer. Переключение на ветвь 3.9 является важным шагом. Многие из примеров и упражнений этой книги вероятно не сработают в главной ветви.

После выгрузки нашего проекта, вам потребуется указать Visual Studio на файл решения PCBuild/pcbuild.sln, кликнув по Projects > pcbuild.sln:

 

Рисунок 2-1



Теперь, когда вы обладаете настроенным Visual Studio и выгруженным исходным кодом, вы можете компилировать CPython для Windows, выполняя последовательность шагов следующей главы.

Монтаж кода Visual Studio

Microsoft Visual Studio Code это расширяемый редактор кода с Интернет магазином подключаемых модулей.

Он предлагает исключительный выбор для работы с CPython, так как он поддерживает как C, так и Python, и к тому же интегрированное взаимодействие с Git.

  Установка

Visual Studio Code, порой именуемый как VS Code, доступен с неким простым установщиком в code.visualstudio.com.

Сразу после установки VS Code обладает всеми необходимыми возможностями редактирования кода, однако он станет намного более мощным после установки вами расширений.

Вы можете получить доступ к панели Расширений, выбрав из своего верхнего меню View > Extensions:

 

Рисунок 2-2



Внутри панели Extensions вы можете искать расширения по названию или же по их уникальному идентификатору, например, ms-vscode.cpptools. В некоторых случаях имеется множество подключаемых модулей с похожими названиями, поэтому пользуйтесь уникальным идентификатором, чтобы быть уверенным что вы устанавливаете то что надо.

  Рекомендуемые для этой книги расширения

Для работы с CPython имеется несколько полезных расширений:

  • C/C++ (ms-vscode.cpptools) предоставляет поддержку для C/C++, включая IntelliSense, отладку и выделение кода.

  • Python (ms-python.python) снабжает богатой поддержкой для редактирования, отладки и чтения кода Python.

  • reStructuredText (lextudio.restructuredtext) снабжает богатой поддержкой для reStructuredText, того формата который используется в документации Python.

  • Task Explorer (spmeesseman.vscode-taskexplorer) добавляет панель Проводника задач вовнутрь вкладки Explorer, что упрощает запуск задач make.

После того как вы установили эти расширения, вам потребуется перезагрузить свой редактор.

Многим из применяемых в данной книге задач требуется командная строка. Вы можете добавить в VS Code встроенный терминал, выбрав Terminal > New Terminal.. Под вашим редактором кода появится терминал:

 

Рисунок 2-3



  Применение Расширенной навигации и расширения кода

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

Например, если вы кликните правой кнопкой по некому вызову функции в C и выберете Go to References, VS Code обнаружит прочие ссылки на эту функцию в вашем базовом коде:

 

Рисунок 2-4



Go to References очень полезен для выявления надлежащего вида вызова некой функции.

Если вы кликните или встанете поверх некого макро C, тогда ваш редактор раскроет этот макро в уже откомпилированный код:

 

Рисунок 2-5



Чтобы выполнить переход к соответствующему определению функции, встаньте над любым её вызовом и нажмите Cmd + Click в macOS или Ctrl + Click в Linux и Windows.

  Настройка задачи и запуск файлов

В своём рабочем каталоге VS Code пользуется папкой .vscode. Если такой папки нет, создайте её сейчас. Внутри этой папки вы можете создавать такие файлы:

  • tasks.json для закладок на команды, которые выполняют данный проект

  • launch.json для настройки своего отладчика (см. Главу 14, Отладка)

  • Прочие относящиеся к встраиваемым модулям файлы.

Внутри своего каталога .vscode создайте файл tasks.json, если он ещё не существует. Такой файл tasks.json будет запускать вас:


cpython-book-samples/11/tasks.json
 	   
 

Рисунок 2-6



При помощи подключаемого модуля Проводника задач вы обнаружите некий список настроенных задач внутри своей группы vscode:

 

Рисунок 2-7



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

Монтаж JetBrains CLion

JetBrains делает некий IDE для Python с названием C/C++, а также IDE для разработки C/C++ с названием CLion.

CPython обладает и кодом C, и кодом Python. Вы можете установить поддержку C/C++ для C/C++, однако CLion поставляется снабжённым поддержкой Python.

[Совет]Совет

Поддержка Makefile доступна только в версиях 2020.2 CLion и выше.

[Совет]Совет

Этот этап требует чтобы вы обладали как сгенерированным makefile посредством исполнения configure, так и скомпилированным CPython.

Прочтите, пожалуйста, Главу 3, Компиляция CPython для своей операционной системы и затем вернитесь к этой главе.

После компиляции CPython в самый первый раз, вы получите в корне своего каталога исходного кода makefile.

Откройте CLion и выберите Open or Import из приветственного окна. Переместитесь в каталог своего исходного кода, выберите необходимый makefile и нажмите Open:

 

Рисунок 2-8



CLion запросит у вас желаете ли вы открыть этот каталог и импортировать соответствующий makefile в качестве некого нового проекта. Выберите Open as Project для импорта в качестве проекта.

CLion запросит какую цель make исполнить перед импортом. Оставьте параметр по умолчанию, clean, и продолжите:

 

Рисунок 2-9



Затем проверьте что вы можете собрать свой исполняемый CPython из CLion. Из верхнего меню выберите Build Build Project.

В планке состояния вы должны обнаружить индикатор хода исполнения для собираемого проекта:

 

Рисунок 2-10



По завершению этой задачи вы можете указать целью данный скомпилированный исполняемый файл в качестве конфигурации выполнения/ отладки.

Выберите Run " Edit Confgurations чтобы открыть окно конфигурации Run/ Debug. Внутри этого окна выберите + Makefle " Application и осуществите следующие шаги:

  1. Установите Name в cpython.

  2. Оставьте целью сборки all.

  3. Для своего исполняемого выберите ниспадающее меню и укажите Select Other, затем отыщите свой скомпилированный исполняемый файл CPython в каталоге исходного кода. Он будет иметь название python или python.exe.

  4. Введите все параметры программы, которые вы всегда хотите получать, например, -X dev для включения режима разработки. Эти флаги позднее мы обсудим в Монтаж конфигурации времени исполнения при помощи командной строки.

  5. Установите рабочий каталог для макро $ProjectFileDir$ CLion:

     

    Рисунок 2-11



Кликните OK для добавления этой конфигурации. Вы можете повторить эти шаги столько раз сколько пожелаете для всех своих целей make CPython. Для получения всех справочных сведений обратитесь к разделу Цели Make CPython из главы Главы 3, Компиляция CPython.

В верхнем правом окне CLion теперь доступна конфигурация сборки CPython:

 

Рисунок 2-12



Чтобы протестировать это кликните по иконке стрелки или выберите Run > Run ’cpython’ в своём верхнем меню. Вы теперь должны обнаружить соответствующий REPL внизу окна CLion:

 

Рисунок 2-13



Отлично! Теперь вы способны вносить изменения и быстро испытывать их, кликая по Build и Run. Если вы поместите некую точку прерывания в своём коде C, тогда make гарантирует вам выбор Debug вместо Run.

Внутри своего редактора кода соответствующие Быстрые клавиши Cmd + Click в macOS и Ctrl + Click в Windows и Linux переведут вас в функциональные возможности навигации по редактору:

 

Рисунок 2-14



Монтаж Vim

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

[Замечание]Замечание

В большинстве дистрибутивов Linux, а также внутри терминала macOS vi это некий псевдоним для vim. В этой книге мы будем применять команду vim, однако если у вас имеется соответствующий псевдонимvi, он также будет работать.

Сразу после своей установки Vim обладает лишь базовой функциональностью, слегка превышающей функциональность подобного Notepad редактора. При некоторых настройках и расширениях, тем не менее, Vim способен стать более мощным инструментом как для редактирования Python, так и для C.

Расширения Vim пребывают в разных местах, включая GitHub. Для упрощения настроек и установки подключаемых модулей из GitHub вы можете установить диспетчер подключаемых модулей, например, Vundle.

Для установки Vundle выполните в своём терминале следующую команду:


$ git clone https://github.com/VundleVim/Vundle.vim.git \
  ~/.vim/bundle/Vundle.vim
		

После того как Vundle выгружен, вам потребуется настроить Vim для загрузки его механизма Vundle.

Вы установите два подключаемых модуля:

  • Fugitive: Полосу состояния для Git с

    закладками для множества задач Git.

  • Fugitive: Панель для упрощения перехода к функциям, методам и классам.

Для установки этих подключаемых модуле, вначале измените содержимое своего файла настроек Vim (обычно HOME/.vimrc) чтобы он содержал следующие строки:


cpython-book-samples/11/.vimrc

syntax on
set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
Plugin 'tpope/vim-fugitive'
Plugin 'majutsushi/tagbar'
" All of your Plugins must be added before this line
call vundle#end()            " required
filetype plugin indent on    " required
" Open tagbar automatically in C files, optional
autocmd FileType c call tagbar#autoopen(0)
" Open tagbar automatically in Python files, optional
autocmd FileType python call tagbar#autoopen(0)
" Show status bar, optional
set laststatus=2
" Set status as git status (branch), optional
set statusline=%{FugitiveStatusline()}
 	   

Для выгрузки и установки этих подключаемых модулей запустите такую команду:


$ vim +PluginInstall +qall
		

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

При изменении и изучении своего исходного кода CPython вы пожелаете выполнять быстрый переход между методами, функциями и макросами. Обычный текстовый поиск не достигает некого вызова функции или её определения из самой реализации. Однако вы можете воспользоваться приложением с названием ctags для индексации исходных файлов по множеству языков программирования в некую базу данных обычного текстового содержимого.

Для индексации заголовков для всех файлов C и Python в стандартной библиотеке исполните такой код:


$./configure
$ make tags
		

Теперь откройте в Vim файл Python/ceval.c:


$ vim Python/ceval.c
		

Вы обнаружите значение состояния Git в самом низу, а также функции, макросы и переменные в панели справа:

 

Рисунок 2-15



Затем откройте файл Python, например, Lib/subprocess.py:


$ vim Lib/subprocess.py
		

Полоска тегов отобразит ваши импорты, классы, методы и функции:

 

Рисунок 2-16



При помощи Vim вы можете переключаться между окнами применяя Ctrl + W, переходить в правую панель используя L и действовать клавишами стрелок для перемещения вверх и вниз между всеми помеченными функциями.

Нажмите Enter чтобы скакнуть в реализацию любой функции. Чтобы вернуться обратно в свою панель редактирования нажмите Ctrl + W и затем H.

[Замечание]Замечание

Посетите VIM Adventures чтобы ознакомиться с командами Vim и запомнить их.

Выводы

Если вы всё ещё не определились с тем какую среду вам применять, нет нужды сразу принимать некое решение. При написании этой книги и работе над внесением изменений в CPython мы применяли несколько сред.

Отладка - критически важная функциональность для производительности, а потому наличие надёжного отладчика, который вы могли бы применять для изучения среды исполнения и выявления ошибок, сэкономит вам много времени. Если в Python вы привыкли к отладке при помощи print(),, тогда важно отметить, что такой подход не работает с C. Отладка будет рассмотрена позднее в данной книге.