Установленные пакеты Python: все способы просмотра и управления

Раздел: Библиотеки -> Пакеты

Обзор способов получения списка установленных библиотек

При работе с Python часто требуется узнать, какие пакеты установлены в текущем окружении. Это необходимо для воспроизведения окружения, поиска конфликтующих версий или проверки наличия зависимостей. Далее рассматриваются несколько подходов, от простой команды до программного доступа.

Как получить список всех установленных пакетов с их версиями?

Самым надёжным и быстрым способом является использование встроенной утилиты pip с командой pip list. Она выводит таблицу, содержащую названия пакетов и установленные версии.

pip list

Python build package (сборка пакета python)

Пример вывода:

Package    Version
---------- -------
click      8.1.3
Flask      2.2.2
numpy      1.23.5
...

Python download package (скачивание пакета python)

Команда показывает все пакеты, установленные через pip, а также пакеты из site-packages, которые были установлены иными способами. Для просмотра только пакетов, установленных через pip, можно добавить флаг --pip (доступен в новых версиях).

Часто используемые модификации:

  • pip list --format columns – явно задать табличный вывод.
  • pip list --outdated – показать пакеты, для которых есть новые версии.
  • pip list --format json – вывод в формате JSON для автоматической обработки.

Проблема: если в системе установлено много пакетов, вывод может быть огромным. Решение: перенаправить вывод в grep (Linux/macOS) или findstr (Windows). Например:

pip list | grep numpy

Python pip install local package (установка локального пакета через pip)

Ошибка 'pip' не является внутренней или внешней командой – означает, что pip не добавлен в PATH. Решение: переустановить Python, отметив опцию «Add Python to PATH», или указывать полный путь к исполняемому файлу pip.

Как получить список в формате, пригодном для requirements.txt?

Команда pip freeze выдаёт установленные пакеты в том виде, в котором они обычно записываются в файл требований – с указанием версий через операторы == или >=.

pip freeze

Python install package version (установка пакета определенной версии в python)

Пример вывода:

click==8.1.3
Flask==2.2.2
numpy==1.23.5

модули python linux (модули python в linux)

Этот вывод удобно сразу сохранять в requirements.txt:

pip freeze > requirements.txt

Update lib python (обновление библиотек python)

Отличие от pip list: pip freeze не показывает пакеты, которые были установлены не через pip, а например, через менеджер пакетов системы. Также он включает только пакеты, явно установленные пользователем, и их зависимости. Иногда отсутствуют некоторые пакеты, если они были установлены в режиме --editable. Решение: для таких случаев лучше использовать pip list --format=freeze (в новых версиях) или комбинировать оба подхода.

Как увидеть зависимости между пакетами в виде дерева?

Сторонний пакет pipdeptree отображает иерархию зависимостей. Он не входит в стандартную поставку, поэтому предварительно устанавливается:

pip install pipdeptree

Python packages list (список установленных пакетов)

Затем выполняется:

pipdeptree

Python pip install windows (установка пакетов pip в windows)

Пример вывода:

Flask==2.2.2
  - click [required: >=8.0, installed: 8.1.3]
  - itsdangerous [required: >=2.0, installed: 2.1.2]
  - Jinja2 [required: >=3.0, installed: 3.1.2]
  - MarkupSafe [required: >=2.0, installed: 2.1.1]

Python pip windows (установка pip на windows)

Возможные ошибки: если дерево очень большое, удобно использовать флаг --packages для фильтрации по конкретному пакету. Также pipdeptree не отображает циклические зависимости (редкий случай). Если команда не найдена, пакет не установлен. Решение: проверить, выполнен ли pip install pipdeptree в том же окружении.

Как программно получить список установленных пакетов внутри скрипта Python?

Для автоматизации или интеграции с другим кодом можно использовать библиотеку importlib.metadata (Python 3.8+) или устаревшую pkg_resources из setuptools. Пример с importlib.metadata:

import importlib.metadata

packages = importlib.metadata.distributions()
for pkg in packages:
    print(pkg.metadata['Name'], pkg.version)

Windows package python (установка пакетов python на windows)

Пример вывода:

click 8.1.3
Flask 2.2.2
numpy 1.23.5

установка pandas python (установка библиотеки pandas в python)

Для старых версий Python используется pkg_resources:

import pkg_resources

for pkg in pkg_resources.working_set:
    print(pkg.project_name, pkg.version)

Python какие библиотеки установлены (список установленных библиотек python)

Проблема: importlib.metadata может не включать некоторые пакеты, установленные не как дистрибутивы (например, в режиме разработчика). Решение: дополнительно обходить директорию site-packages, но это менее надёжно. Также в pkg_resources возникала медленная работа при большом количестве пакетов; рекомендуется использовать importlib.metadata.

Как получить список пакетов в окружении Anaconda/Miniconda?

Пользователи conda-окружений могут выполнить команду conda list, которая выводит пакеты, установленные через conda, а также через pip (если они были установлены после активации окружения).

conda list

установить библиотеку python visual studio (установка библиотек python в visual studio)

Пример вывода:

# packages in environment at /opt/conda/envs/myenv:
#
# Name                    Version                   Build  Channel
click                     8.1.3            pyhd8ed1ab_0    conda-forge
flask                     2.2.2            pyhd8ed1ab_0    conda-forge

Pip idle python (установка пакетов pip в idle)

Для экспорта в формате YAML используется conda env export.

Если conda list не показывает пакеты, установленные через pip, это может быть связано с тем, что pip был вызван вне активированного окружения. Решение: активировать окружение conda activate myenv перед выполнением. Также может потребоваться установка pip внутри окружения.

Можно ли посмотреть пакеты через файловый менеджер?

Все установленные пакеты хранятся в директории site-packages. Её расположение зависит от интерпретатора. Узнать путь можно командой:

python -c "import site; print(site.getsitepackages())"

Uv python windows (установка и использование uv в python на windows)

В этой папке находятся папки пакетов и файлы метаданных. Этот способ рассматривается как резервный, так как не даёт версионной информации в удобном виде.

Проблема: в папке могут находиться не только пакеты, но и другие файлы. Версии пакетов можно извлечь только просматривая файлы METADATA внутри папки *.dist-info. Для автоматизации лучше использовать программные методы.

Как проверить целостность установленных пакетов?

Команда pip check проверяет зависимости: она сообщает о несовместимостях, отсутствующих или неправильных версиях зависимых пакетов. Хотя она не выдаёт список всех пакетов, она полезна для диагностики.

pip check

Python setup py install (установка пакета python с setup.py)

Пример вывода при проблемах:

flask 2.2.2 requires itsdangerous>=2.0, but you have itsdangerous 1.1.0 which is incompatible.
Если после установки пакетов возникают ошибки импорта, pip check помогает локализовать причину. Решение: обновить или переустановить конфликтующие пакеты.
- Python make install (установка python пакета через make install)
- Python module not found (модуль python не найден)
- Find lib python (поиск библиотеки python)

Подробные и нестандартные примеры

Для углублённого понимания представлены расширенные примеры использования команд и кода.

Мощный фильтр с помощью pip list и grep

Выборка пакетов, содержащих определённую подстроку в имени (например, все пакеты с flask):

Пример
pip list | grep -i flask

Результат:

flask 2.2.2
flask-cors 3.0.10

Экспорт в JSON для автоматической обработки

Пример
pip list --format json > packages.json

Содержимое packages.json (фрагмент):

[
  {"name": "click", "version": "8.1.3"},
  {"name": "flask", "version": "2.2.2"}
]

Использование pip freeze с исключением версий

Чтобы не фиксировать версии, а получить только имена (для базового requirements), можно отредактировать вывод или использовать --exclude-editable:

Пример
pip freeze | sed 's/==.*//' > requirements_nover.txt

Результат (только имена):

click
flask
numpy

Детальное дерево зависимостей для одного пакета

Пример
pipdeptree --packages numpy

Вывод:

numpy==1.23.5

(если numpy не имеет зависимостей)

Получение информации о лицензии пакета через importlib.metadata

Пример
import importlib.metadata as md
pkg = md.metadata('flask')
print(pkg['License'])

Результат:

BSD-3-Clause

Сравнение пакетов между двумя окружениями

Сохранить списки в файлы и использовать diff:

Пример
# окружение 1
pip freeze > env1.txt
# окружение 2
pip freeze > env2.txt
diff env1.txt env2.txt

Вывод покажет добавленные, удалённые и изменённые пакеты.

Поиск установленного пакета в конкретной папке

Если пакет отсутствует в списке pip, но физически лежит в site-packages, можно проверить наличие модуля:

Пример
python -c "import sys; sys.path.insert(0,'.'); import alib; print(alib.__file__)"

Результат (если найдено):

/usr/lib/python3.10/site-packages/alib/__init__.py

Использование conda list в эксплицитном формате

Пример
conda list --explicit

Выдаёт URLs пакетов, что удобно для точного воспроизведения окружения.

Проверка зависимостей устаревших пакетов

Пример
pip list --outdated --format=columns

Вывод:

Package   Version Latest Type
numpy     1.23.5  1.24.0 wheel
requests  2.25.0  2.28.1 wheel

Список установленных библиотек Python - comments

En
Python какие библиотеки установлены (python)