Установка сторонних пакетов. Виртуальное окружение
Хотя стандартная библиотека Python содержит сотни модулей и является отличной базой, она не решает абсолютно все возможные задачи. Программисту могут требоваться более специализированные инструменты, например, для создания веб-приложений, работы с графикой или машинного обучения. Именно здесь на помощь приходят сторонние пакеты или библиотеки, созданные сообществом Python.
Виртуальное окружение
Однако сторонние библиотеки могут развиваться и функции, которые были в одной версии, могут отсутствовать или работать абсолютно иначе в другой.
Например, в одном проекте вы работаете с данными с помощью библиотеки pandas версии 2.0.1, а ваш новый проект требует более современной версии 2.3.3. Если вы обновите pandas глобально на компьютере, то можете сломать ваш первый проект. Поэтому каждый проект должен иметь своё виртуальное окружение – изолированную папку, которая содержит собственную копию интерпретатора Python и уникальный набор установленных библиотек. Тогда инструменты, установленные для одного проекта, будут невидимы для другого, и вы всегда можете точно определить, какие именно библиотеки и каких версий нужны для запуска проекта.
Создание виртуального окружения
Управление виртуальным окружением осуществляется через терминал, и вы можете использовать как встроенный терминал VS Code, так и терминал операционной системы или командную строку, однако убедитесь, что вы находитесь в папке проекта.
Для создания виртуального окружения используется встроенный модуль venv, который входит в стандартную библиотеку Python. Его необходимо запустить через терминал с помощью команды python -m venv имя_окружения.
Флаг -m (от англ. module – модуль) в этой команде означает запуск модуля, а имя_окружения – это название папки, в которой будет храниться окружение. Чаще всего эту папку называют venv или .venv (от англ. virtual environment – виртуальное окружение).
Также не забывайте, что если вы используете Linux или macOS, то вместо python следует писать python3, то есть явно указывать версию языка.
Теперь давайте создадим виртуальное окружение, которое назовём .venv:
python -m venv .venv
После выполнения этой команды в текущей папке появится новая папка .venv со всеми необходимыми файлами.
Активация виртуального окружения
Для работы в виртуальном окружении его нужно активировать. Команда активации зависит от операционной системы.
На Windows нужно запустить пакетный файл:
.venv\Scripts\activate
А на Linux или macOS запустить bash-скрипт:
source .venv/bin/activate
Если вы создали виртуальное окружение с другим именем, то укажите его вместо .venv.
После активации в терминале появится префикс с именем виртуального окружения:
(.venv) PS C:\Projects\Chapter6>
Этот префикс означает, что теперь все команды, связанные с пакетами, будут выполняться только в этом виртуальном окружении (папке) и не затронут глобальные настройки.
Деактивация виртуального окружения
Если вы хотите вернуться к глобальным настройкам системы, то можете деактивировать окружение:
deactivate
Префикс (.venv) исчезнет, и вы снова будете использовать глобальный интерпретатор Python.
Управление сторонними библиотеками
Самым большим хранилищем пакетов Python является PyPI (от англ. Python Package Index – Каталог пакетов Python). Он содержит сотни тысяч пакетов, которые были загружены в него разработчиками со всего мира.
Для установки пакетов используется менеджер пакетов pip – программа для установки, обновления и удаления пакетов Python. Название pip является рекурсивным акронимом PIP Installs Packages (с англ. – Установщик пакетов PIP), то есть содержит само себя.
Начиная с версии Python 3.4, pip автоматически устанавливается вместе с Python. Вы можете убедиться, что он доступен, введя в терминале команду:
pip --version
Вы должны увидеть ответ, похожий на этот:
pip 25.1.1 from C:\Users\Irina\AppData\Local\Programs\Python\Python313\Lib\site-packages\pip (python 3.13)
Если же система выдает ошибку, вам, возможно, потребуется переустановить Python.
Установка пакетов
Для установки пакета используется следующая команда pip install имя_пакета. Если вы не хотите устанавливать этот пакет глобально, то перед установкой убедитесь, что ваше виртуальное окружение активно и вы видите его имя в скобках перед командной строкой.
Давайте установим пакет rich, предназначенный для красивого вывода данных в терминале. Он позволяет добавлять цвета, стили и даже создавать таблицы:
pip install rich
После этого pip скачает нужные файлы пакета и все его зависимости в папку site-packages вашего активированного виртуального окружения.
Теперь библиотека rich доступна для импорта в любом модуле текущего проекта. Например, мы можем импортировать из неё функцию print(), которая заменит встроенную функцию print():
from rich import print
print("[bold yellow]Привет, мир![/bold yellow]")
Благодаря тегам bold и yellow выведенный текст в терминале будет выделен жирным шрифтом и жёлтого цвета:
Привет, мир!
Встроенная функция print(), в свою очередь, такой вывод не поддерживает и вывела бы всю строку целиком, включая теги.
Установка определённой версии пакета
По умолчанию pip устанавливает последнюю версию пакета, но это поведение можно настроить, указав желаемую версию после двух знаков равно (==).
Например, нам нужна библиотека numpy версии 2.2.1:
pip install numpy==2.2.1
Эта команда установит именно указанную версию библиотеки numpy.
Данные об установленном пакете
Команда pip show имя_пакета выводит в терминал подробную информацию об установленном пакете. Например, выведем данные о ранее установленном пакете numpy:
pip show numpy
В результате мы увидим полное описание пакета numpy:
Name: numpy
Version: 2.2.1
Summary: Fundamental package for array computing in Python
Home-page:
Author: Travis E. Oliphant et al.
Author-email:
License: Copyright (c) 2005-2024, NumPy Developers.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
...
Location: С:\Projects\Chapter6\.venv\Lib\site-packages
Requires:
Required-by:
Пункт Requires обычно содержит зависимости, то есть пакеты, необходимые для работы, а Required-by – пакеты, для которых данный пакет является зависимостью.
Список всех установленных пакетов
Команда pip list выводит в терминал список всех установленных пакетов:
pip list
В результате мы увидим все установленные пакеты и их версии, включая зависимости:
Package Version
-------------- -------
markdown-it-py 4.0.0
mdurl 0.1.2
numpy 2.2.1
pip 24.0
Pygments 2.19.2
rich 14.2.0
Установка пакетов из файла
Пакеты можно устанавливать не только вручную, но из файла, который часто называют requirements.txt. В этом файле должны быть построчно перечислены все необходимые пакеты и их точные версии.
Для того, чтобы создать такой файл используется команда pip freeze:
pip freeze
Но мы можем перенаправить вывод с помощью символа > и записать вывод в файл requirements.txt:
markdown-it-py==4.0.0
mdurl==0.1.2
numpy==2.2.1
pip==24.0
Pygments==2.19.2
rich==14.2.0
Тогда другой разработчик или вы сами можете воспроизвести точно такое же виртуальное окружение одной командой:
pip install -r requirements.txt
Здесь флаг -r (от англ. requirements – требования) указывает pip прочитать и установить все пакеты, указанные в файле.
Удаление пакета
Если пакет вам больше не нужен, или вы забыли активировать виртуальное окружение и случайно установили пакет глобально, то команда pip uninstall имя_пакета позволит полностью удалить пакет и его зависимости.
Допустим, мы решили не работать со сложными вычислениями, поэтому удалим модуль numpy:
pip uninstall numpy
После этого pip выведет в терминал список папок, которые будут удалены и попросит подтвердить удаление:
Found existing installation: numpy 2.2.1
Uninstalling numpy-2.2.1:
Would remove:
c:\projects\chapter\.venv\lib\site-packages\numpy-2.2.1-cp313-cp313-win_amd64.whl
c:\projects\chapter\.venv\lib\site-packages\numpy-2.2.1.dist-info\*
c:\projects\chapter\.venv\lib\site-packages\numpy.libs\libscipy_openblas64_-43e11ff0749b8cbe0a615c9cf6737e0e.dll
c:\projects\chapter\.venv\lib\site-packages\numpy.libs\msvcp140-d64049c6e3865410a7dda6a7e9f0c575.dll
c:\projects\chapter\.venv\lib\site-packages\numpy\*
c:\projects\chapter\.venv\scripts\f2py.exe
c:\projects\chapter\.venv\scripts\numpy-config.exe
Proceed (Y/n)?
После подтверждения (ввода буквы Y и нажатия на клавишу Enter), библиотека numpy будет полностью удалена из текущей среды.
Примеры
Пример 1. Библиотека geocode и получение полного адреса
Функция geocode_address(address) принимает строку address с адресом объекта и выводит на экран его полный адрес, включая ширину и долготу. Для поиска адреса используется пакет geopy, позволяющий использовать бесплатный сервис для геокодирования Nominatim. Он позволяет получать географические координаты (широту и долготу) по адресу, находить адрес по координатам, а также вычислять расстояние между двумя точками.
Пакет geopy является сторонним пакетом, который нужно установить с помощью pip:
pip install geopy
При создании экземпляра класса геокодера Nominatim ему обязательно передаётся параметр user_agent, который требуется для идентификации приложения при обращении к сервису. Метод geocode() созданного объекта отправляет строку с адресом и пытается найти соответствующее местоположение. Если местоположение найдено, то возвращается объект Location с атрибутами address, latitude и longitude для полного адреса, широты и долготы соответственно, иначе возвращается None:
from geopy.geocoders import Nominatim
def geocode_address(address: str) -> None:
"""Выводит на экран полный адрес с географическими координатами
(широтой и долготой).
Параметры:
address: Строка, содержащая адрес для геокодирования
(например, "Красная Площадь, Москва").
"""
# Используем Nominatim (OpenStreetMap)
geolocator = Nominatim(user_agent="my_python_app")
# Геокодирование
location = geolocator.geocode(address)
if location:
print(f"Полный адрес: {location.address}")
print(f"Широта: {location.latitude:.4f}")
print(f"Долгота: {location.longitude:.4f}")
else:
print("Адрес не найден")
geocode_address("Красная Площадь, Москва")
Вывод:
Полный адрес: Красная площадь, 4, Китай-город, Тверской район, Москва, Центральный федеральный округ, 109012, Россия
Широта: 55.7536
Долгота: 37.6215
Пример 2. Использование библиотеки pandas в IPYNB-файле
Библиотека pandas является практически стандартом для работы с данными, включая их обработку, фильтрацию, группировку и подготовку к визуализации или машинному обучению. Её ключевыми структурами данных являются Series – одномерный массив с метками и DataFrame – двумерная структура данных, похожая на таблицу.
Однако вместо классических модулей с расширением .py для анализа данных и машинного обучения используются файлы с расширением .ipynb (от англ. Interactive Python NoteBook – интерактивный блокнот Python). Они сочетают в себе код (Python) и текст (объяснения, заголовки, графики) в одном окне, при этом код можно выполнять не сразу весь, а запускать отдельные ячейки.
Давайте создадим файл с расширением .ipynb в VS Code. Блокнот создаётся пустым, поэтому нужно создать ячейку для кода с помощью кнопки + Code ①. При этом IPYNB-файлы позволяют использовать команды pip прямо в ячейках, начиная их с символа % ②, поэтому библиотеку pandas можно установить прямо в блокноте через команду % pip install pandas. Установка выполняется в ту виртуальную среду, которая выбрана для данного блокнота.
Запуск кода в выбранной ячейке осуществляется через нажатие клавиш Shift + Enter, однако при первом запуске потребуется выбрать виртуальную среду ③.
После этого нужно разрешить установить Python некоторые зависимости и библиотека будет установлена.
Теперь создадим ещё две ячейки с кодом. В первой импортируем библиотеку pandas через псевдоним pd:
import pandas as pd
А во второй ячейке создадим словарь data с товарами в интернет-магазине, который передадим классу DataFrame для создания полноценной таблицы с данными. Для того, чтобы вывести первые 5 строк такой таблицы используется метод df.head():
data = {
"ID": [101, 102, 103, 104, 105, 106, 107],
"Название": [
"Ноутбук Acer",
"Мышь Logitech",
"Хлеб Бородинский",
"Сыр Гауда",
"Монитор Dell",
"Учебник по математике",
"Кофеварка"
],
"Цена": [75000, 1200, 55, 450, 25000, 980, 4500],
"Количество": [10, 50, 150, 30, 15, 40, 12],
"Категория": [
"Электроника",
"Электроника",
"Продукты",
"Продукты",
"Электроника",
"Книги",
"Электроника"
]
}
# Создадим DataFrame из словаря
df = pd.DataFrame(data)
# Отобразим красивую таблицу
df.head()
Результат выполнения кода в каждой ячейке отображается под этой ячейкой.
Если у вас много ячеек с кодом, то необязательно запускать каждую из них вручную через сочетание клавиш Shift + Enter, а вы можете нажать на кнопку Run All в верхней панели, которая выполнит код во всех ячейках, начиная с первой.
Итоги
- Каждый проект должен иметь своё виртуальное окружение – изолированную папку, которая содержит собственную копию интерпретатора Python и собственный, уникальный набор установленных библиотек.
- Команда
python -m venv имя_окружениясоздаёт виртуальное окружение с помощью встроенного модуляvenv. - Для работы в виртуальном окружении его нужно активировать. Команда активации зависит от операционной системы.
- Самым большим хранилищем пакетов Python является PyPI, содержащий сотни тысяч пакетов, которые были загружены в него разработчиками со всеми мира.
- Для установки пакетов используется менеджер пакетов
pip– программа для установки, обновления и удаления пакетов Python. - Команда
pip install имя_пакетаустанавливает пакет в текущую активированную виртуальную среду. - Список пакетов проекта и их версии обычно сохраняют в файл
requirements.txtс помощью командыpip freeze > requirements.txt. - Команда
pip install -r requirements.txtустанавливает все пакеты из файлаrequirements.txt.
Задания для самопроверки
1. Почему важно использовать виртуальное окружение для каждого проекта, а не устанавливать библиотеки глобально?
Виртуальное окружение изолирует версии интерпретатора Python и библиотек одного проекта от других, что позволяет избежать конфликтов между разными версиями для разных проектов.
2. Для чего используется команда pip freeze? Как сохранить результат этой команды в файл?
Она выводит в терминале все установленные пакеты и их версии для текущей среды. Символ > позволяет перенаправить вывод с терминала в файл: pip freeze > requirements.txt.
3. Объясните роль файла requirements.txt в совместной работе над проектом или при переносе проекта на другой компьютер. Какая команда используется для установки всех библиотек из этого файла?
Файл requirements.txt содержит все пакеты (и версии) проекта, что позволяет воспроизвести точно такое же виртуальное окружение на другом компьютере. Для установки пакетов из файла следует использовать команду pip install с флагом -r: pip install -r requirements.txt.
4. Используя модуль venv, создайте виртуальное окружение и назовите его .venv. Затем активируйте его. Все следующие задания выполняйте в этом виртуальном окружении.
.venv\Scripts\activate
Команда активации зависит от операционной системы. На Windows нужно запустить пакетный файл.
source .venv/bin/activate
А на Linux или macOS запустить bash-скрипт.
5. В активированном окружении используйте pip для установки популярной библиотеки для анализа данных pandas (последней версии).
pip install pandas
6. Используйте команду pip, чтобы получить краткую информацию о только что установленном пакете pandas.
pip show pandas
7. Удалите текущую версию pandas из активированного виртуального окружения.
pip uninstall pandas
0 комментариев