Установленные пакеты Python: все способы просмотра и управления
Обзор способов получения списка установленных библиотек
При работе с Python часто требуется узнать, какие пакеты установлены в текущем окружении. Это необходимо для воспроизведения окружения, поиска конфликтующих версий или проверки наличия зависимостей. Далее рассматриваются несколько подходов, от простой команды до программного доступа.
Как получить список всех установленных пакетов с их версиями?
Самым надёжным и быстрым способом является использование встроенной утилиты pip с командой pip list. Она выводит таблицу, содержащую названия пакетов и установленные версии.
pip listVisual studio code библиотеки python (управление библиотеками в visual studio code)
Пример вывода:
Package Version ---------- ------- click 8.1.3 Flask 2.2.2 numpy 1.23.5 ...
Update lib python (обновление библиотек 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 packages list (список установленных пакетов)
Ошибка 'pip' не является внутренней или внешней командой – означает, что pip не добавлен в PATH. Решение: переустановить Python, отметив опцию «Add Python to PATH», или указывать полный путь к исполняемому файлу pip.
Как получить список в формате, пригодном для requirements.txt?
Команда pip freeze выдаёт установленные пакеты в том виде, в котором они обычно записываются в файл требований – с указанием версий через операторы == или >=.
pip freezeRemove python package (удаление пакета python)
Пример вывода:
click==8.1.3 Flask==2.2.2 numpy==1.23.5
Python pip install windows (установка пакетов pip в windows)
Этот вывод удобно сразу сохранять в requirements.txt:
pip freeze > requirements.txtPython pip windows (установка pip на windows)
Отличие от pip list: pip freeze не показывает пакеты, которые были установлены не через pip, а например, через менеджер пакетов системы. Также он включает только пакеты, явно установленные пользователем, и их зависимости. Иногда отсутствуют некоторые пакеты, если они были установлены в режиме --editable. Решение: для таких случаев лучше использовать pip list --format=freeze (в новых версиях) или комбинировать оба подхода.
Как увидеть зависимости между пакетами в виде дерева?
Сторонний пакет pipdeptree отображает иерархию зависимостей. Он не входит в стандартную поставку, поэтому предварительно устанавливается:
pip install pipdeptreeApt get python (установка python через apt-get)
Затем выполняется:
pipdeptreeWindows package python (установка пакетов python на 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]
установка pandas python (установка библиотеки pandas в python)
Возможные ошибки: если дерево очень большое, удобно использовать флаг --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)Python какие библиотеки установлены (список установленных библиотек python)
Пример вывода:
click 8.1.3 Flask 2.2.2 numpy 1.23.5
установить библиотеку python visual studio (установка библиотек python в visual studio)
Для старых версий Python используется pkg_resources:
import pkg_resources
for pkg in pkg_resources.working_set:
print(pkg.project_name, pkg.version)Pip idle python (установка пакетов pip в idle)
Проблема: importlib.metadata может не включать некоторые пакеты, установленные не как дистрибутивы (например, в режиме разработчика). Решение: дополнительно обходить директорию site-packages, но это менее надёжно. Также в pkg_resources возникала медленная работа при большом количестве пакетов; рекомендуется использовать importlib.metadata.
Как получить список пакетов в окружении Anaconda/Miniconda?
Пользователи conda-окружений могут выполнить команду conda list, которая выводит пакеты, установленные через conda, а также через pip (если они были установлены после активации окружения).
conda listPython pip path (путь к pip в python)
Пример вывода:
# 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
Uv python windows (установка и использование uv в python на windows)
Для экспорта в формате YAML используется conda env export.
Если conda list не показывает пакеты, установленные через pip, это может быть связано с тем, что pip был вызван вне активированного окружения. Решение: активировать окружение conda activate myenv перед выполнением. Также может потребоваться установка pip внутри окружения.
Можно ли посмотреть пакеты через файловый менеджер?
Все установленные пакеты хранятся в директории site-packages. Её расположение зависит от интерпретатора. Узнать путь можно командой:
python -c "import site; print(site.getsitepackages())"Python setup py install (установка пакета python с setup.py)
В этой папке находятся папки пакетов и файлы метаданных. Этот способ рассматривается как резервный, так как не даёт версионной информации в удобном виде.
Как проверить целостность установленных пакетов?
Команда pip check проверяет зависимости: она сообщает о несовместимостях, отсутствующих или неправильных версиях зависимых пакетов. Хотя она не выдаёт список всех пакетов, она полезна для диагностики.
pip checkPython pip update package (обновление пакета через pip update)
Пример вывода при проблемах:
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