Как стать автором
Обновить

Python для начинающих дата-аналитиков: как настроить виртуальное окружение?

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров10K

Введение

Привет! Меня зовут Женя и я работаю аналитиком данных. В этой статье я бы хотел рассказать начинающим аналитикам о том, как правильно настроить окружение для работы с Python. Когда я только начинал заниматься анализом данных, концепция питоновского виртуального окружения вводила меня в ступор, и здесь я постараюсь показать, что в ней нет ничего сложного.

Для этого мы:

  1. Установим Python

  2. Создадим и активируем виртуальное окружение при помощи базовых инструментов pip и venv

  3. В качестве примера установим библиотеки notebook и pandas

  4. Посмотрим на базовое управление зависимостями через requirements.txt

  5. Запустим Jupyter Notebook и напишем в нём "Hello, world!"

В конце я покажу, как сделать то же самое при помощи более современного инструмента uv, а пока приступим.

Установка Python

Если вы работаете на каком-либо дистрибутиве Linux, Python 3, как правило, предустановлен в системе. Это можно проверить, выполнив в терминале команду python3 --version (Debian, Ubuntu) или просто python --version (Arch, Fedora). Я буду показывать всё на примере Ubuntu 24.04, установленной в WSL (Windows Subsystem for Linux):

На macOS вы можете установить Python с помощью пакетного менеджера Homebrew либо официального установщика. Будьте внимательны: на macOS предустановлен старый Python 2, и если вы выполните просто python --version, то увидите именно его. Установите Python 3 и выполняйте все команды через python3 <arguments>.

На Windows я бы советовал использовать WSL, но можно точно так же воспользоваться официальным установщиком (не забудьте на первом экране поставить галочку напротив Add Python to PATH, чтобы иметь доступ к Питону из терминала) либо при помощи одного из виндовых пакетных менеджеров (я использую и рекомендую Scoop).

Создание виртуального окружения

В этой части мы настроим окружение для удобной работы с Python. Настройка окружения для Python - до сих пор не самый очевидный и тривиальный процесс. Думаю, что вскоре эти проблемы решаться с помощью uv (менеджера версий Питона, пакетов и окружений), но пока остановимся на самом распространённом и простом способе: связке venv + pip.

Создадим директорию, в которой мы собираемся работать. У меня это будет директория python_intro, которую я создам в директории Code, лежащей в корне Ubuntu:

# ~ - это псевдоним корневой директории, 
# а команда cd означает 'change directory' 
# и ожидает в качестве своего аргумента 
# путь к директории, куда мы хотим переместиться
cd ~/Code

# команда mkdir создаёт новую директорию
mkdir python_intro
cd python_intro

Старайтесь называть файлы, директории, столбцы таблиц и т. д., не используя пробелов. Так с ними будет намного удобнее работать. Например, если бы наша директория называлась python intro, то в команде cd её пришлось бы взять в кавычки (cd 'python intro'), либо заэкранировать пробел. Иначе cd решила бы, что ей пытаются передать через пробел два аргумента, а ожидает она всего один.

Итак, мы находимся в директории python_intro. Здесь мы должны создать виртуальное окружение для работы с Питоном и корректной установки пакетов, в т. ч. notebook и pandas.

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

Если устанавливать pandas в системе, т. е. глобально, у вас так не получится, придётся выбирать. А если устанавливать pandas не глобально, а в виртуальное окружение конкретного проекта, выбирать не придётся: в каждое окружение установится своя версия.

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

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

# python3 - обращение к интерпретатору Питона
# -m - флаг, который указывает, что следующий аргумент
# является названием питоновского модуля
# (а не, например, файла)
# .venv - название директории, в которую будут помещены
# файлы виртуального окружения

python3 -m venv .venv

Ubuntu требует указания мажорной версии: python3. Где-то достаточно написать только python (Fedora, Arch), на Windows можно написать и просто py, хотя я предпочитаю писать так, как будет работать почти везде.

При исполнении этой команды на Linux вы можете столкнуться с проблемой, но сама система подскажет, как её решить:

Сам пакет может называться по-другому (python-venv, например), но после его установки команда отработает успешно:

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

# для Линуксов и Маков
ls -la

# для Windows
dir

В общем, если прочитать нашу команду естественным языком, получится что-то вроде "python3, возьми модуль (-m), который называется venv сгенерируй всё необходимое для виртуального окружения и сложи это в директорию .venv". Заметьте, что директория .venv может называться как угодно. Мы можем сказать, например:

python3 -m venv my_personal_venv

И это тоже сработает. Но лучше следовать конвенции и называть эту директорию .venv или venv, чтобы сразу было понятно, что в ней лежит.

Активация виртуального окружения

Создать виртуальное окружение мало - для полноценной работы его нужно активировать.

Давайте спросим у нашей оболочки командной строки, какой Python сейчас используется:

# Linux / macOS
which python3

# Windows
Get-Command python

Мы увидим что-то вроде /usr/bin/python3 (или путь к исполнимому файлу Питона на Windows, например). Это значит, что сейчас у нас используется Питон, установленный глобально в системе (т. е. мы пока не находимся в виртуальном окружении). Чтобы активировать виртуальное окружение, нам нужно сообщить оболочке командной строки, что мы этого хотим. Файлы, с помощью которых виртуальное окружение активируется, находятся по пути .venv/bin/ на Unix'ах и .venv/Scripts на Windows. Сделайте ls .venv/bin/ или dir .venv/Scripts/ - и вы увидите файлы, в названиях которых есть слово activate.

Чтобы активировать виртуальное окружение, на Unix'ах выполните:

source .venv/bin/activate

А на Windows:

.\.venv\Scripts\Activate.ps1

Пользователи Windows здесь скорее всего получат ошибку. Дело в том, что по умолчанию PowerShell (оболочка командной строки в Windows) запрещает исполнять скрипты. Нам нужно изменить политику PowerShell в отношении скриптов для текущего пользователя (если вы устанавливали Scoop, то уже выполняли эту команду):

# эта команда разрешает для текущего пользователя
# исполнять как локально созданные,
# так и загруженные из интернета, но подписанные скрипты
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# дальше повторите
.\.venv\Scripts\Activate.ps1

В зависимости от вашей оболочки командной строки вы можете увидеть разные вещи, но в общем случае перед приглашением командной строки появится (.venv):

Поздравляю, мы в виртуальном окружении!

Убедится в этом можно, проверив, где сейчас находится исполнимый файл нашего Питона:

which python3

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

Установка библиотек

Теперь нам нужно установить библиотеки, которыми мы собираемся пользоваться. Посмотрим, как это сделать, на примере pandas и notebook. Для установки библиотек используется стандартный питоновский менеджер пакетов pip. Чтобы установить библиотеки с его помощью, нужно использовать команду install, а дальше перечислить названия библиотек, разделяя их пробелами:

pip install pandas notebook

(На Linux вы можете столкнуться либо не столкнуться с той же проблемой, что и с venv. В любом случае, вы уже догадываетесь, что пакет с названием python-pip или python3-pip доступен в репозиториях вашего дистрибутива.)

В результате выполнения этой команды будут отправлены запросы к pypi.org (по умолчанию) либо к какому-либо еще репозиторию (в вашей компании может быть свой собственный) и на ваш компьютер, в директорию .venv, скачаются файлы библиотек pandas и notebook.

Сейчас, когда библиотеки установлены, вы можете выполнить pip list и поразиться, какое количество дополнительных пакетов притащили за собой наши pandas и notebook (тащил их, в основном, последний).

Уделите время тому, чтобы поискать разные библиотеки, которые вам точно пригодятся, на pypi.org. Посмотрите, какие у них актуальные версии, перейдите на официальные гитхабовские репозитории. Это полезно для понимания общего контекста. Сделайте это по крайней мере для numpy, pandas, matplotlib, seaborn и scikit-learn.

Управление зависимостями

У вас мог возникнуть вопрос, как делиться таким проектом. Например, откуда человек, которому вы скинете проект, узнает, какие библиотеки нужно установить, чтобы с ним работать? Не будете же вы скидывать ему вашу .venv! Надеюсь...

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

Чтобы создать такой файлик, нужно выполнить:

pip freeze > requirements.txt

После этого зависимости зафиксируются в файле с таким названием (это тоже конвенция). Откройте его в вашем любимом редакторе или сделайте cat requirements.txt (Unix) / Get-Content requirements.txt (Windows) в терминале - и вы увидете там все зависимости своего проекта. Человек, который будет пользоваться вашим проектом (или вы на другом ноутбуке) должен будет просто выполнить в своём виртуальном окружении pip install -r requirements.txt - и все нужные зависимости будут установлены.

Запускаем Jupyter Notebook и выдыхаем

Осталось только запустить Jupyter Notebook. Юпитер-ноутбуки - это специальные интерактивные среды выполнения для разных языков, в т. ч. для Python. Их очень удобно использовать для анализа данных, поскольку такие ноутбуки состоят из ячеек, которые можно выполнять по отдельности и сразу видеть результат выполнения.

Давайте пока просто запустим юпитер-ноутбук и посмотрим на него:

jupyter-notebook

# на Windows можете написать jupyter-notebook.exe,
# но это особенно ни на что не повлияет,
# если у вас современный PowerShell, а не cmd

Ноутбук либо откроется в браузере автоматически, либо вам нужно будет перейти по ссылке, которую вы увидите в выводе в терминале. По умолчанию Jupyter Notebook запускается на localhost:8888.

Новый Jupyter Notebook можно создать, нажав на кнопку New справа вверху:

Напишите print("Hello, world!") (или что-нибудь на свой вкус) и нажмите Ctrl + Enter, чтобы выполнить ячейку:

Также попробуйте импортировать в ноутбук pandas, чтобы убедиться, что эта библиотека видна в текущем окружении:

import pandas as pd

Закройте вкладки, вернитесь в терминал и нажмите Ctrl + C, чтобы остановить сервер Jupyter Notebook. Для того чтобы выйти из виртуального окружения, исполните команду deactivate. Проверьте, что Python снова стал системным, а ваша оболочка больше не знает команды jupyter-notebook - и, собственно, всё. Удачи в изучении дата-анализа!

Приложение: Как использовать uv?

uv - это одновременно менеджер разных версий Python, пакетов и виртуальных окружений. Управление версиями Питона не очень актуально для дата-специалистов, но uv - это прежде всего очень удобно.

Установить uv можно следующими командами:

# Unix
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

По умолчанию uv будет использовать системный Python, установить и зафиксировать другие версии можно командами uv python install <version> и uv python pin <version>

Создадим и активируем виртуальное окружение (предварительно я удалил всё из нашей рабочей директории):

uv venv
source .venv/bin/activate

Инициализируем новый проект:

uv init

uv создал файлы проекта, зафиксировал версию Питона, инициализировал git-репозиторий, добавил минимальный .gitignore. А с помощью pyproject.toml мы сможем описать свой проект:

Имена всех наших зависимостей будут добавляться в блок dependencies, а их версии автоматически фиксироваться.

Чтобы добавить библиотеки в проект, выполним:

uv add pandas notebook

После установки зависимостей проверим pyproject.toml:

Заметьте, что uv добавил в него только основные зависимости нашего проекта (те, которые мы сами прописали), а зависимости зависимостей подразумеваются, но не перечислены явно, как в requirements.txt. Это делает описание проекта чище и компактнее.

Теги:
Хабы:
Всего голосов 11: ↑10 и ↓1+11
Комментарии9

Публикации

Работа

Data Scientist
41 вакансия

Ближайшие события