Все курсы > Программирование на Питоне > Занятие 14 (часть 3)
Поговорим про дистрибутив Anaconda более подробно.
Conda
Программа conda, как уже было сказано, объединяет в себе систему управления пакетами (как pip) и, кроме того, позволяет создавать окружения.
Идея виртуального окружения или виртуальной среды (virtual environment) заключается в том, что если в рамках вашего проекта вы, например, используете определенную версию библиотеки Numpy и установка более ранней или более поздней версии приведет к сбоям в работе вашего кода, хорошим решением была бы изоляция нужной версии Numpy, а также всех остальных используемых вами библиотек. Именно для этого и нужно виртуальное окружение.
Рассмотрим, как мы можем устанавливать пакеты и создавать окружения через Anaconda Prompt и через Anaconda Navigator.
Anaconda Prompt
Пакеты и окружения
Про пакеты. По аналогии с pip, установленные (в текущем окружении) пакеты можно посмотреть с помощью команды conda list.
Установить пакет можно с помощью команды conda install <package_name>. Обновить пакет можно через conda update <package_name>. Например, снова попробуем установить Numpy.
Про окружения. По умолчанию мы работаем в базовом окружении (base environment). Посмотреть, какие в целом установлены окружения можно с помощью команды conda info --envs.
Как вы видите, пока у нас есть только одно окружение. Давайте создадим еще одно виртуальное окружение и назовем его, например, waterfall.
Введите команду conda create --name waterfall.
Введем две команды
- conda activate waterfall для активации нового окружения; и
- conda list для того, чтобы посмотреть установленные в нем пакеты.
Как вы видите, в новом окружении нет ни одного пакета. Введем conda search seaborn, чтобы посмотреть какие версии этого пакета доступны для скачивания.
Скачаем этот пакет через conda install seaborn. Проверим установку с помощью conda list.
Как вы видите, помимо seaborn было установлено множество других необходимых для работы пакета библиотек. Вернуться в базовое окружение можно с помощью команд conda activate base или conda deactivate.
Импорт модулей и переменная path
На прошлом занятии мы научились импортировать собственный модуль в командной строке Windows (cmd).
Посмотрим, отличается ли содержимое списка path для двух установленных версий Питона. Для этого в командной строке Windows и в Anaconda Prompt перейдем в интерактивный режим с помощью python. Затем введем
1 2 |
import sys sys.path |
Как мы видим, пути в переменной path будут отличаться и это нужно учитывать, если мы хотим локально запускать собственные модули.
Anaconda Navigator
Запускать программы, управлять окружениями и устанавливать необходимые библиотеки можно также через Anaconda Nagivator. На вкладке Home вы видите программы, которые можно открыть (launch) или установить (install) для текущего окружения.
На вкладке Environments отображаются созданные нами окружения (в частности, окружение waterfall, которое мы создали ранее) и содержащиеся в них пакеты.
В целом интерфейс интуитивно понятен, и так как мы уже познакомились с принципом создания окружений и установки в них дополнительных пакетов, уверен, работа с Anaconda Navigator сложностей не вызовет.
Прежде чем завершить, обратимся к еще одной программе для интерактивного программирования JupyterLab.
JupyterLab
JupyterLab — расширенная версия Jupyter Notebook, которая также входит в дистрибутив Anaconda. Запустить эту программу можно через Anaconda Navigator или введя команду jupyter lab в Anaconda Prompt.
После запуска вы увидите вкладку Launcher, в которой можно создать новый ноутбук (Notebook) на Питоне или R, открыть консоль (Console) на этих языках, а также создать файлы в различных форматах (Other). Слева вы видите список папок компьютера.
В разделе Console нажмем на Python 3 (ipykernel). Введем несложный код (см. ниже) и исполним его, нажимая Shift + Enter.
Как вы видите, здесь мы можем писать код на Питоне так же, как мы это делали в командной строке Windows на прошлом занятии. Закроем консоль.
В файловой системе слева мы можем открывать уже созданные ноутбуки. Например, откроем ноутбук на R rprogramming.ipynb.
В левом меню вертикальном меню, нажав на вторую сверху иконку, мы увидим открытые горизонтальные вкладки (open tabs: Launcher и rprogramming.ipynb), а также запущенные ядра (kernels).
Консольные ядра (Console 1 и Console 2) можно открыть (по сути, мы снова запустим консоль).
Две оставшиеся вертикальные вкладки открывают доступ к автоматическому оглавлению (content) и расширениям (extensions).
Вкладки Run и Kernel в верхнем меню JupyterLab в целом аналогичны вкладкам Cell и Kernel в JupyterNotebook.
Подведем итог
На сегодняшнем занятии мы познакомились с программой Jupyter Notebook, а также изучили дистрибутив Anaconda, в состав которого входит эта программа.
Говоря о программе Jupyter Notebook, мы узнали про возможности работы с ячейками и ядром программы. Кроме того, мы познакомились с языком разметки Markdown и написанием формул с помощью языка верстки LaTeX.
После этого мы установили ядро для программирования на R и рассмотрели основы этого языка.
При изучении дистрибутива Anaconda мы позникомились с системой conda и попрактиковались в установке библиотек и создании окружений через Anaconda Prompt и Anaconda Navigator.
Наконец мы узнали про особенности программы JupyterLab.
Вопросы для закрепления
Вопрос. Что такое Anaconda?
Посмотреть правильный ответ
Ответ: Anaconda — это дистрибутив Питона (с репозиторием пакетов) и отдельной программой управления окружениями и пакетами conda. Пользователь может взаимодействовать с этой программой через терминал (Anaconda Prompt) и графический интерфейс (Anaconda Navigator).
Помимо этого, в дистрибутив Anaconda входят, среди прочих, программы Jupyter Notebook и JupyterLab.
Вопрос. Какой тип ячеек доступен в Jupyter Notebook?
Посмотреть правильный ответ
Ответ: в Jupyter Notebook есть два основных типа ячеек — ячейки для написания кода (в частности, на Питоне или R) и текстовые ячейки, поддерживающие Markdown и LaTeX.
Вопрос. Для чего нужно виртуальное окружение?
Посмотреть правильный ответ
Ответ: виртуальное окружение (virtual environment) позволяет установить и изолировать определенные версии Питона и его пакетов. Таким образом код, написанный с учетом конкретной версии Питона и дополнительных библиотек, исполнится без ошибок.
Ответы на вопросы
Вопрос. Можно ли исполнить код на R в Google Colab?
Ответ. Да, это возможно. Причем двумя способами.
Способ 1. Откройте ноутбук. Введите и исполните команду %load_ext rpy2.ipython. В последующих ячейках введите %R, чтобы в этой же строке написать код на R или %%R, если хотите, чтобы вся ячейка исполнилась как код на R (так называемые магические команды).
В этом случае мы можем исполнять код на двух языках внутри одного ноутбука.
1 2 |
# введем магическую команду, которая позволит программировать на R %load_ext rpy2.ipython |
1 2 3 4 5 6 |
# команда %%R позволит Colab распознать ячейку как код на R %%R # кстати, числовой вектор можно создать просто с помощью двоеточия x <- 1:10 x |
1 |
[1] 1 2 3 4 5 6 7 8 9 10 |
1 2 3 |
# при этом ничто не мешает нам продолжать писать код на Питоне import numpy as np np.mean([1, 2, 3]) |
1 |
2.0 |
Приведенный выше код можно найти в дополнительных материалах⧉ к занятию.
Способ 2. Если вы хотите, чтобы весь код исполнялся на R (как мы это делали в Jupyter Notebook), создайте новый ноутбук, используя следующую ссылку:
https://colab.research.google.com/#create=true&language=r⧉
Теперь, если вы зайдете на вкладку Runtime → Change runtime type (Среда выполнения → Сменить среду выполнения), то увидите, что можете выбирать между Python и R.
Выведем версию R в Google Colab.
1 |
R.version.string |
1 |
'R version 4.4.0 (2024-04-24)' |
Посмотреть на установленные пакеты можно с помощью installed.packages(). Созданный ноутбук Google Colab на R доступен по ссылке⧉.
Вопрос. Очень медленно загружается Anaconda. Можно ли что-то сделать?
Ответ. Можно работать через Anaconda Prompt, эта программа быстрее графического интерфейса Anaconda Navigator.
Кроме того, можно использовать дистрибутив Miniconda⧉, в который входит conda, Питон и несколько ключевых пакетов. Остальные пакеты устанавливаются вручную по мере необходимости.
Вопрос. Разве Jupyter не должен писаться через i, как Jupiter?
Ответ. Вы правы в том плане, что название Jupyter Notebook происходит не от планеты Юпитер, которая по-английски как раз пишется через i (Jupiter), а представляет собой акроним от названий языков программирования Julia, Python и R.
При этом, как утверждают разработчики, слово Jupyter также отсылает к тетрадям (notebooks) Галилея, в которых он, в частности, документировал наблюдение за лунами Юпитера.
Вопрос. В каких еще программах можно писать код на Питоне и R?
Ответ. Таких программ несколько. Довольно удобно пользоваться облачным решением Kaggle. Там можно создавать как скрипты (scripts, в том числе RMarkdown Scripts), так и ноутбуки на Питоне и R. Подробнее можно почитать в документации⧉ на их сайте.
Вопрос. Можно ли создать виртуальное окружение каким-либо другим способом помимо программы conda?
Ответ. Да, можно. Вот коротко, какие шаги нужно выполнить.
Вначале убедитесь, что у вас уже установлен Питон. В нем по умолчанию содержится модуль venv, который как раз предназначен для создания виртуального окружения.
Шаг 1. Создайте папку с вашим проектом, например, пусть это будет папка webapp для веб-приложения на популярном фреймворке для Питона Django.
Шаг 2. В командной строке перейдите в папку webapp.
Затем введите команду для создания виртуального окружения.
1 |
python -m venv djenv |
По сути мы говорим Питону создать окружение djenv (название может быть любым) с помощью модуля venv. Переключатель (flag или switch) -m подсказывает Питону, что venv — это модуль, а не файл.
После выполнения этой команды создается папка djenv виртуального окружения.
Шаг 3. Активируем это виртуальное окружение следующей командой.
1 |
.\djenv\Scripts\activate |
Здесь мы обращаемся к файлу activate внутри папки Scripts. Как вы видите, название окружения появилось слева от пути к папке.
Теперь через pip можно устанавливать пакеты, которые будут «видны» только внутри виртуального окружения djenv.
Шаг 4. Выйти из этого виртуального окружения можно с помощью команды deactivate. Если вам нужно удалить окружение, сначала деактивируйте его, а затем вручную удалите соответствующую папку.
Вопрос. Что такое IPython и CPython, и чем они отличаются?
Ответ. CPython — это «традиционный» или эталонный интерпретатор Питона. Именно этот интерпретатор мы скачали с официального сайта.
IPython (Interactive Python) — это интерактивная оболочка, которая расширяет возможности, например, командной строки, которой мы пользовались ранее. Проект IPython со временем превратился в Jupyter Notebook.
Установить ipython можно из командной строки с помощью команды
1 |
pip install ipython[all] |
После этого введите команду ipython и командная строка превратится в оболочку IPython, которая во многом похожа на Jupyter Notebook.
В частности, мы видим, что появляется очередность выполнения ячеек In[1]. Код лучше организован, подсвечен разными цветами, выставляется автоматический отступ и появляются подсказки при написании кода.
Также появляются уже знакомые нам магические команды. Например, можно посмотреть на адрес текущей папки или на созданные переменные.
Для очистки экрана от кода используется команда cls, для выхода — exit.