Установка пакетов, pip и виртуальная среда

Последнее обновление: 08.03.2025

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

Для управления пакетами - их установки или удаления необходим такой инструмент как менеджер пакетов. Для работы с пакетами Python существует множество менеджеров пакетов, например, pip, conda, pixi, uv и так далее.

Этой статье мы рассмотрим использование менеджера pip, поскольку он является стандартным и наиболее распространенным способом для управления пакетами, и, кроме того, обычно он устанавливается вместе с интерпретатором Python и поэтому обычно уже присутствует в системе. pip загружает пакеты из репозитория PyPI (Python Package Index), который является самым большим репозиторием пакетов Python. Так, на момент написания текущей статьи PyPI насчитывал более 600000 проектов. Репозиторий также доступен по адресу https://pypi.org/. В частности, через веб-интерфейс можно найти нужный пакет, всю связанную с ним информацию, его историю версий и т.д.

Для начала необходимо убедиться, что у вас установлен pip. Если у вас установлен Python, то, скорее всего, pip тоже уже есть. Чтобы проверить наличие pip, откройте терминал (или командную строку) и выполните команду:

pip --version

Если pip установлен, вы увидите версию менеджера пакетов:

eugene@Eugene:~$ pip --version
pip 24.0 from /usr/lib/python3/dist-packages/pip (python 3.12)
eugene@Eugene:~$ 

Если pip по какой-то причине вдруг не был установлен, то мы увидим ошибку типа

"pip" не является внутренней или внешней командой, исполняемой программой или пакетным файлом

В этом случае нам надо установить pip. Для этого можно выполнить в командной строке/консоли следующую команду:

python -m ensurepip --upgrade

Если pip ранее уже был установлен, то можно его обновить с помощью команды

python -m pip install --upgrade pip

Установка виртуальной среды

В операционной системе на базе Linux (Ubuntu, Debian и др.), где используется встроенное управление пакетами, например, через apt или другой пакетный менеджер, перед установкой пакетов Python через pip также необходимо создать виртуальную среду. На Windows использовать виртуальную среду необязательно, но тоже является рекомендуемым подходом при работы с пакетами Python. Виртуальная среда позволяет изолировать пакеты от системных установок Python.

Так, без использования виртуальной среды все устанавливаемые через pip пакеты на Windows устанавливаются глобально. Однако что если после создания первого приложения выйдет новая версия используемого пакета? Если мы захотим использовать для второго проекта новую версию пакета, то из-за глобальной установки пакетов придется обновлять первый проект, который использует старую версию. Это потребует некоторой дополнительной работы по обновлению, так как не всегда соблюдается обратная совместимость между пакетами. Если мы решим использовать для второго проекта старую версию, то мы лишимся потенциальных преимуществ новой версии. И использование виртуальной среды как раз позволяет разграничить пакеты для каждого проекта.

Для работы с виртуальной средой в python применяется встроенный модуль venv. Обычно этот модуль доступен по умолчанию, но на некоторых операционных системах на базе Linux он может остутствовать. В этом случае нам надо установить в ОС пакет python3-venv. Например, установка на Ubuntu/Debian:

sudo apt install python3-venv

Итак, создадим вируальную среду. Вначале определим каталог для проектов и перейдем в него в консоли/командной строке. Затем для создания виртуальной среды выполним следующую команду:

python3 -m venv myvenv

Модулю venv передается название среды, которая в данном случае будет называться "myvenv". Для наименования виртуальных сред нет каких-то определенных условностей.

После этого в текущей папке будет создан подкаталог "myvenv".

eugene@Eugene:/python/metanit$  python3 -m venv myvenv
eugene@Eugene:/python/metanit$  ls -l myvenv
total 2
drwxrwxrwx 1 root root 528 Mar  8 14:56 bin
drwxrwxrwx 1 root root   0 Mar  8 14:56 include
drwxrwxrwx 1 root root 152 Mar  8 14:56 lib
lrwxrwxrwx 1 root root   3 Mar  8 14:56 lib64 -> lib
-rwxrwxrwx 1 root root 192 Mar  8 14:56 pyvenv.cfg
eugene@Eugene:/eugene/python/metanit$ 

Активация виртуальной среды

Для использования виртуальную среду надо активировать. И каждый раз, когда мы будем работать с проектом, надо активировать связанную с ним виртуальную среду. Например, активируем выше созданную среду, которая располагается в текущем каталоге в папке "myvenv". Процесс активации немного отличается в зависимости от операционной системы и от того, какие инструменты применяются. Так, в Windows можно использовать командную строку и PowerShell, но между ними есть отличия:

  • Активация в Windows в коммандной строке

    Если наша ОС - Windows, то в папке myvenv/Scripts/ мы можем найти файл activate.bat, который активирует виртуальную среду. Так, в Windows активация виртуальной среды в коммандной строке будет выглядеть таким образом:

    myvenv\Scripts\activate.bat
  • Активация в Windows в PowerShell

    Также при работе на Windows в папке myvenv/Scripts/ мы можем найти файлactivate.ps1, который также активирует виртуальную среду, но применяется только в PowerShell. Но при работе с PowerShell следует учитывать, что по умолчанию в этой оболочке запрещено применять скрипты. Поэтому перед активацией среды необходимо установить разрешения для текущего пользователя. Поэтому для активации виртуальной среды в PowerShell необходимо выполнить две следующих команды:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    myvenv\Scripts\Activate.ps1
    
  • Активация в Linux и MacOS

    Для Linux и MacOS активация будет производиться с помощью следующей команды:

    source myvenv/bin/activate

После активации слева текущего пути мы увидим название виртуальной среду в круглых скобках:

(myvenv) eugene@Eugene:/python/metanit$ 

Пример на основе командной строки Windows:

C:\eugene\python\metanit>python -m venv myvenv

C:\eugene\python\metanit>myvenv\Scripts\activate.bat

(myvenv) C:\eugene\python\metanit>

Пример на основе консоли Ubuntu:

eugene@Eugene:/python/metanit$ python3 -m venv myvenv
eugene@Eugene:/python/metanit$ source myvenv/bin/activate
(myvenv) eugene@Eugene:/python/metanit$

Деактивация виртуальной среды

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

deactivate

Управление пакетами с помощью pip

Установка пакетов

Для установки пакетов с помощью pip применяется команда

pip install название_пакета

Рассмотрим на примере установки популярного пакета для отрисовки графиков matplotlib. Для его установки после активации виртуальной среды (как было показано выше) выполним команду

pip install matplotlib

И в конце проверим установку, выполнив команду, которая выводит версию matplotlib:

python -c "import matplotlib; print(matplotlib.__version__)"

Полный пример

(myvenv) eugene@Eugene:/python/metanit$ pip install matplotlib
Collecting matplotlib
  Downloading matplotlib-3.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Collecting contourpy>=1.0.1 (from matplotlib)
  Downloading contourpy-1.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.4 kB)
Collecting cycler>=0.10 (from matplotlib)
  Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
.....................................................................
Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: six, pyparsing, pillow, packaging, kiwisolver, fonttools, cycler, contourpy, python-dateutil, matplotlib
Successfully installed contourpy-1.3.1 cycler-0.12.1 fonttools-4.56.0 kiwisolver-1.4.8 matplotlib-3.10.1 packaging-24.2 pillow-11.1.0 pyparsing-3.2.1 python-dateutil-2.9.0.post0 six-1.17.0
(myvenv) eugene@Eugene:/python/metanit$ python -c "import matplotlib; print(matplotlib.__version__)"
3.10.1
(myvenv) eugene@Eugene:/python/metanit$ 

Получение информации о пакетах

С помощью команды pip list можно получить список всех установленных пакетов и их версий:

(myvenv) eugene@Eugene:/python/metanit$ pip list
Package         Version
--------------- -----------
contourpy       1.3.1
cycler          0.12.1
fonttools       4.56.0
kiwisolver      1.4.8
matplotlib      3.10.1
packaging       24.2
pillow          11.1.0
pip             24.0
pyparsing       3.2.1
python-dateutil 2.9.0.post0
six             1.17.0
(myvenv) eugene@Eugene:/python/metanit$ 

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

Если надо получить информацию по какому-то конкретному пакету, то можно использовать команду

pip show имя_пакета

Например, получим информацию по matplotlib:

(myvenv) eugene@Eugene:/python/metanit$ pip show matplotlib
Name: matplotlib
Version: 3.10.1
Summary: Python plotting package
Home-page: 
Author: John D. Hunter, Michael Droettboom
................................
Requires: contourpy, cycler, fonttools, kiwisolver, numpy, packaging, pillow, pyparsing, python-dateutil
Required-by: 
(myvenv) eugene@Eugene:/python/metanit$

Удаление пакета

Для удаления пакета применяется команда

pip uninstall имя_пакета

Использование установленных пакетов

Теперь для демонстрации применим установленный пакет в простейшей программе. Например, выведем показатели популярности языка Python согласно рейтингу TIOBE за 2022 год помесячно. Для этого в текущем каталоге определим файл app.py со следующим кодом:

import matplotlib.pyplot as plt     # импортируем функциональность модуля pyplot из пакета matplotlib

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
rates = [13.58,  15.33, 14.26, 13.92, 12.74, 12.2, 13.44, 15.63, 15.74, 17.08, 17.18, 16.66]

# метка по оси X
plt.xlabel("month")
# метка по оси Y
plt.ylabel("rate")

plt.plot(months, rates)
plt.show()

Так как этот код приведен больше для демонстрации, то рассмотрим вкратце, что он делает. Здесь список months хранит сокращенные названия месяцев, а rates - показатели популярности.

С помощью функции xlabel() устанавливаем метку для оси Х, а с помощью функции ylabel() - для оси Y. В функцию plot() передаются два списка - для отображения по оси X (здесь список months) и по оси Y (здесь список rates). Функция plot() принимает набор значений, которые надо вывести на графике. С помощью функции show() отображаем график в окне просмотра по умолчанию.

После активации виртуальной среды (если она ранее была деактивирована или не была активирован) запустип скрипт на выполнение:

(myvenv) eugene@Eugene:/python/metanit$ python3 app.py

В итоге нам отобразится следующее окно:

Виртуальная среда и пакетный менеджер pip в Python

Таким образом, пакетный менеджер pip позволяет устанавливать пакеты Python. А создание виртуальных окружений предоставляет лучший способ работать с Python-проектами, особенно когда нужно установить дополнительные пакеты, такие как matplotlib, без изменения глобальных системных установок. Это изолирует зависимости и предотвращает конфликты с другими проектами и системными библиотеками.

Помощь сайту
Юмани:
410011174743222
Номер карты:
4048415020898850