Просмотр установленных модулей Python в системе
Основные инструменты для вывода списка пакетов
Наиболее универсальное решение - использование встроенного менеджера пакетов pip. Команда pip list выводит таблицу с именами и версиями установленных пакетов. Если требуется только имена и версии без форматирования, используется pip freeze, формат которого подходит для файла requirements.txt.
Как получить базовый список всех пакетов?
Выполните в терминале:
pip listPip upgrade package python (обновление пакета через pip)
Результат появится в виде столбцов Package и Version. Для детального вывода можно задать формат:
pip list --format=columnsPython pip update package (обновление пакета через pip update)
Альтернативный формат json:
pip list --format=json
Python build package (сборка пакета python)
Команда pip freeze выводит строки вида package==version, которые удобно сохранять в файл:
pip freeze > installed_packages.txtPython download package (скачивание пакета python)
Типичные проблемы:
- Команда pip не найдена. Убедитесь, что Python и pip установлены и добавлены в PATH. На Windows может потребоваться запустить py -m pip list.
- Список слишком большой. Используйте grep (Linux/Mac) или findstr (Windows) для фильтрации, например:
pip list | grep numpyPython pip install local package (установка локального пакета через pip)
- Отсутствует информация о зависимостях. pip list показывает только верхнеуровневые пакеты. Для просмотра дерева зависимостей установите pipdeptree.
Как получить список только пакетов, установленных через pip, без зависимостей?
По умолчанию pip list показывает все пакеты, включая зависимости, установленные автоматически. Чтобы увидеть только те, что были явно установлены пользователем, используйте опцию --not-required (доступна в pip 23.1 и новее).
pip list --not-requiredPython install package version (установка пакета определенной версии в python)
Это выведет только пакеты, которые не являются зависимостями других пакетов. Если версия pip старше, можно воспользоваться сторонними инструментами, например pip-chill.
Если опция не поддерживается, обновите pip:
python -m pip install --upgrade pipмодули python linux (модули python в linux)
Как просмотреть пакеты в виртуальном окружении?
Виртуальные окружения изолируют пакеты. Активируйте окружение, затем выполните те же команды:
# Активация на Windows
.\venv\Scripts\activate
# Активация на Linux/Mac
source venv/bin/activate
# После активации
pip listUpdate lib python (обновление библиотек python)
Если окружение не активировано, можно указать путь к интерпретатору Python внутри него:
./venv/bin/python -m pip listPython packages list (список установленных пакетов)
Важно помнить, что pip freeze в активированном окружении покажет только пакеты этого окружения.
Ошибка: pip не распознает окружение. Убедитесь, что внутри venv установлен pip (он есть по умолчанию). Если нет, выполните python -m ensurepip --upgrade.
Как получить список пакетов из Python кода?
Для программного доступа к установленным пакетам можно использовать стандартные модули importlib.metadata (Python 3.8+) или pkg_resources (из setuptools). Пример с importlib.metadata:
import importlib.metadata
distributions = importlib.metadata.distributions()
for dist in distributions:
print(dist.metadata['Name'], dist.version)Remove python package (удаление пакета python)
Или с pkg_resources:
import pkg_resources
for package in pkg_resources.working_set:
print(package.project_name, package.version)Python pip install windows (установка пакетов pip в windows)
Такой подход удобен для интеграции в скрипты администрирования.
Модуль pkg_resources может быть недоступен, если setuptools не установлен. Установите его через pip: pip install setuptools.
Как сохранить список пакетов в requirements.txt и затем его просмотреть?
Команда pip freeze генерирует список в формате, пригодном для установки. Это стандартный способ сохранить окружение.
pip freeze > requirements.txtPython pip windows (установка pip на windows)
Просмотреть содержимое можно текстовым редактором или командой cat (Linux) / type (Windows).
cat requirements.txtApt get python (установка python через apt-get)
Такой подход используется для воспроизведения окружения на другой машине.
Проблема: pip freeze часто включает зависимости, которые не нужны. Для выделения только основных пакетов используйте pip-chill или pip list --not-required.
Как проверить, установлен ли конкретный пакет, и узнать его версию?
Для этого служит команда pip show:
pip show requestsWindows package python (установка пакетов python на windows)
Она выводит подробную информацию: версию, автора, зависимости и т.д. Если пакет не найден, выводится сообщение об ошибке.
Также можно выполнить поиск по имени через pip list | grep requests (Linux) или pip list | findstr requests (Windows).
Если пакет установлен в нескольких окружениях, команда покажет информацию только из текущего активного окружения.
Как получить список пакетов в окружении Conda?
Для дистрибутива Anaconda/Miniconda используется команда conda list:
conda list
Она показывает все пакеты, установленные через conda. Если есть также пакеты, установленные через pip, они отображаются отдельно (строка с каналом 'pypi').
Можно отфильтровать по имени: conda list numpy.
Важно: pip и conda используют разные репозитории, и список conda не включает пакеты из pip, установленные без conda. Для полного списка нужно выполнять обе команды.
Расширенные примеры работы со списком пакетов
В этом разделе представлены нестандартные подходы и готовые скрипты.
1. Обработка JSON-вывода pip list с помощью Python
Команда pip с форматом json выдаёт структурированные данные, которые можно обработать скриптом:
pip list --format=json | python -c "import sys,json; data=json.load(sys.stdin); [print(p['name'],p['version']) for p in data]"
numpy 1.21.0 requests 2.25.1 ...
Скрипт читает JSON из stdin, разбирает его и выводит имя и версию каждого пакета.
2. Дерево зависимостей с помощью pipdeptree
Утилита pipdeptree визуализирует иерархию зависимостей:
pip install pipdeptree
pipdeptree
numpy==1.21.0 requests==2.25.1 - certifi==2021.5.30 - chardet==4.0.0 - idna==2.10 - urllib3==1.26.6
Помогает выявить конфликты и лишние зависимости.
3. Определение глобальных и локальных пакетов через Python
Скрипт сравнивает путь размещения пакета с sys.prefix:
import sys, importlib.metadata
for dist in importlib.metadata.distributions():
loc = dist.locate_file('')
if sys.prefix in str(loc):
print(dist.metadata['Name'], dist.version, 'global')
else:
print(dist.metadata['Name'], dist.version, 'venv')
numpy 1.21.0 global requests 2.25.1 venv
Полезно для контроля окружений.
4. Минимальный requirements.txt без версий
Для проектов с плавающими версиями можно сохранить только имена пакетов:
pip list --not-required --format=freeze --exclude-editable | awk -F'=' '{print $1}' > minimal_req.txt
numpy requests ...
Учтите, что опция --exclude-editable может не работать в старых версиях pip.
5. Сравнение двух файлов requirements.txt
Команда diff (Unix) помогает увидеть изменения:
diff -u old_req.txt new_req.txt
--- old_req.txt +++ new_req.txt @@ -1,3 +1,4 @@ numpy==1.20.0 +requests==2.25.1 scipy==1.6.0
Для Windows используйте fc или сторонние инструменты.
6. Зависимости конкретного пакета через importlib.metadata
python -c "import importlib.metadata as m; reqs=m.requires('requests'); print('\\n'.join(reqs))"
certifi>=2017.4.17 chardet>=3.0.2,<5 idna>=2.5,<3 urllib3>=1.21.1,<2
Позволяет быстро проверить, какие версии требуются.
7. Полный экспорт окружения Conda
Для воспроизведения окружения в Anaconda создаётся YAML-файл:
conda env export > environment.yml
(содержит channels, dependencies, и т.д.)
Затем окружение можно восстановить командой conda env create -f environment.yml.