Введение
Привет! Меня зовут Женя и я работаю аналитиком данных. В этой статье я бы хотел рассказать начинающим аналитикам о том, как правильно настроить окружение для работы с Python. Когда я только начинал заниматься анализом данных, концепция питоновского виртуального окружения вводила меня в ступор, и здесь я постараюсь показать, что в ней нет ничего сложного.
Для этого мы:
Установим Python
Создадим и активируем виртуальное окружение при помощи базовых инструментов
pip
иvenv
В качестве примера установим библиотеки
notebook
иpandas
Посмотрим на базовое управление зависимостями через
requirements.txt
Запустим 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
. Это делает описание проекта чище и компактнее.