Установленные пакеты Python: все способы просмотра и управления
Обзор способов получения списка установленных библиотек
При работе с Python часто требуется узнать, какие пакеты установлены в текущем окружении. Это необходимо для воспроизведения окружения, поиска конфликтующих версий или проверки наличия зависимостей. Далее рассматриваются несколько подходов, от простой команды до программного доступа.
Как получить список всех установленных пакетов с их версиями?
Самым надёжным и быстрым способом является использование встроенной утилиты pip с командой pip list. Она выводит таблицу, содержащую названия пакетов и установленные версии.
pip listPython 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 numpyPython pip install local package (установка локального пакета через pip)
Ошибка 'pip' не является внутренней или внешней командой – означает, что pip не добавлен в PATH. Решение: переустановить Python, отметив опцию «Add Python to PATH», или указывать полный путь к исполняемому файлу pip.
Как получить список в формате, пригодном для requirements.txt?
Команда pip freeze выдаёт установленные пакеты в том виде, в котором они обычно записываются в файл требований – с указанием версий через операторы == или >=.
pip freezePython 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.txtUpdate lib python (обновление библиотек python)
Отличие от pip list: pip freeze не показывает пакеты, которые были установлены не через pip, а например, через менеджер пакетов системы. Также он включает только пакеты, явно установленные пользователем, и их зависимости. Иногда отсутствуют некоторые пакеты, если они были установлены в режиме --editable. Решение: для таких случаев лучше использовать pip list --format=freeze (в новых версиях) или комбинировать оба подхода.
Как увидеть зависимости между пакетами в виде дерева?
Сторонний пакет pipdeptree отображает иерархию зависимостей. Он не входит в стандартную поставку, поэтому предварительно устанавливается:
pip install pipdeptreePython packages list (список установленных пакетов)
Затем выполняется:
pipdeptreePython 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)
В этой папке находятся папки пакетов и файлы метаданных. Этот способ рассматривается как резервный, так как не даёт версионной информации в удобном виде.
Как проверить целостность установленных пакетов?
Команда pip check проверяет зависимости: она сообщает о несовместимостях, отсутствующих или неправильных версиях зависимых пакетов. Хотя она не выдаёт список всех пакетов, она полезна для диагностики.
pip checkPython 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 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