Проверка установленных модулей и пакетов в окружении Python
Способы узнать состав установленных библиотек Python
Как получить полный список установленных пакетов с версиями?
Наиболее эффективным решением считается команда pip list, которая выводит все пакеты, установленные в текущем окружении Python, вместе с их версиями. Команда выполняется в терминале или командной строке.
pip listверсия библиотеки python (версия библиотеки python)
Результат выглядит как таблица с колонками Package и Version. Для удобства можно использовать флаг --format=columns (по умолчанию) или --format=json для машинной обработки.
Проблема: команда может показать пакеты не из того окружения, если не активировано виртуальное окружение. Решение: предварительно активировать нужное окружение (source venv/bin/activate на Linux/macOS или venv\Scripts\activate на Windows).
Типичная ошибка: pip не распознаётся как внешняя команда. Это происходит, если Python не добавлен в PATH. Решение: использовать python -m pip list вместо простого pip list.
Как создать файл зависимостей для воспроизведения окружения?
Команда pip freeze выводит список пакетов в формате, подходящем для requirements.txt. В отличие от pip list, она показывает только те пакеты, которые установлены через pip, и использует операторы сравнения версий (например, Django==5.0).
pip freeze > requirements.txtустановленные библиотеки python (установленные библиотеки python)
Этот файл затем используется для установки зависимостей на другом компьютере: pip install -r requirements.txt.
Проблема: pip freeze может включать лишние зависимости (зависимости зависимостей). Для точного контроля рекомендуется использовать pip-tools или poetry.
Как получить список установленных пакетов внутри кода Python?
Для программного доступа к списку используйте модуль importlib.metadata (Python 3.8+). Функция distributions() возвращает итератор по всем установленным дистрибутивам.
from importlib.metadata import distributions
for dist in distributions():
print(dist.metadata['Name'], dist.version)
Python libraries (библиотеки python)
Этот метод работает без запуска внешних команд и удобен для интеграции в скрипты.
Проблема: в старых версиях Python (до 3.8) используется pkg_resources из setuptools. Миграция на importlib.metadata может быть неполной для некоторых пакетов.
Типичная ошибка: ModuleNotFoundError: No module named 'importlib.metadata'. Возникает в Python 3.7 и ниже. Решение: установить backport importlib_metadata через pip install importlib-metadata и импортировать его.
Как быстро проверить установку библиотеки в Jupyter Notebook?
В ячейке Jupyter можно использовать магическую команду %pip list или выполнить Python-код с !pip list. Также доступен графический интерфейс: вкладка Environments в Anaconda Navigator показывает все пакеты.
!pip listПроблема: в Jupyter может выполняться ядро, привязанное к другому окружению. Решение: проверить путь к интерпретатору с помощью import sys; print(sys.executable).
Расширенные примеры работы со списками установленных библиотек
Пример 1: вывод списка пакетов в формате JSON для обработки скриптом.
pip list --format=json | python -c "import sys,json; data=json.load(sys.stdin); print('Количество пакетов:', len(data))"Пример 2: получение только устаревших пакетов (требуется подключение к интернету).
pip list --outdatedРезультат содержит три колонки: Package, Version, Latest.
Пример 3: программный сбор информации о пакетах с помощью importlib.metadata с фильтрацией.
from importlib.metadata import distributions, version
packages = {dist.metadata['Name']: dist.version for dist in distributions()}
# Показать только пакеты, начинающиеся с 'django'
django_packages = {k: v for k, v in packages.items() if 'django' in k.lower()}
print(django_packages){'django': '5.0.1', 'django-cors-headers': '4.0.0'}Пример 4: сравнение двух файлов requirements.txt для выявления различий.
# Сначала генерируем списки
pip freeze > req1.txt
# активируем другое окружение
pip freeze > req2.txt
# затем скрипт сравнения
diff -u req1.txt req2.txt # Linux/macOS или fc req1.txt req2.txt в WindowsПример 5: использование pipdeptree для отображения дерева зависимостей.
pip install pipdeptree
pipdeptreeПример 6: проверка конкретной библиотеки без вывода всего списка (например, версия pandas).
pip show pandasName: pandas Version: 2.2.0 ...
Пример 7: получение информации о местоположении пакетов.
pip list -v | grep -E "^Package|Location" # на Linux/macOS
pip list --verbose | findstr "Location" # на WindowsПример 8: скрипт для аудита лицензий всех установленных пакетов.
from importlib.metadata import distributions
for dist in distributions():
license_info = dist.metadata.get('License', 'Unknown')
print(f"{dist.metadata['Name']}: {license_info}")