Какие пакетные менеджеры используются в Python?

Ответ

В Python для управления зависимостями проекта и установки библиотек используются следующие основные пакетные менеджеры:

  1. pip (Pip Installs Packages):

    • Назначение: Стандартный и наиболее распространенный менеджер пакетов для Python. Он является де-факто стандартом для установки пакетов из PyPI (Python Package Index).
    • Почему: Позволяет легко устанавливать, обновлять и удалять пакеты, а также управлять файлами requirements.txt для фиксации зависимостей проекта.
    • Пример команд:
      pip install package_name          # Установка пакета
      pip uninstall package_name        # Удаление пакета
      pip freeze > requirements.txt     # Экспорт установленных пакетов в файл
      pip install -r requirements.txt   # Установка пакетов из файла
  2. conda:

    • Назначение: Кроссплатформенный менеджер пакетов и окружений, особенно популярен в области Data Science и машинного обучения.
    • Почему: Управляет не только Python-пакетами, но и бинарными зависимостями (например, компилированными библиотеками C/C++), что критично для многих научных библиотек (NumPy, SciPy, TensorFlow). Также позволяет легко создавать и переключаться между изолированными окружениями.
    • Пример команд:
      conda install package_name        # Установка пакета
      conda create -n myenv python=3.9  # Создание нового окружения
      conda activate myenv              # Активация окружения
      conda list                        # Список установленных пакетов
  3. Poetry:

    • Назначение: Современный инструмент для управления зависимостями, виртуальными окружениями и сборки пакетов.
    • Почему: Обеспечивает детерминированное управление зависимостями (фиксирует точные версии), упрощает создание и публикацию пакетов, а также автоматически управляет виртуальными окружениями. Использует файл pyproject.toml для конфигурации.
    • Пример команд:
      poetry add package_name           # Добавление зависимости
      poetry install                    # Установка зависимостей из pyproject.toml
      poetry run python my_script.py    # Запуск скрипта в контексте окружения
      poetry build                      # Сборка пакета

Виртуальные окружения

Для изоляции зависимостей и предотвращения конфликтов между проектами крайне рекомендуется использовать виртуальные окружения. Основные инструменты для этого:

  • venv: Встроенный модуль Python (начиная с Python 3.3) для создания легковесных виртуальных окружений.
    python -m venv myenv
    source myenv/bin/activate # Linux/macOS
    myenv\Scripts\activate # Windows
  • virtualenv: Более мощная и гибкая альтернатива venv, поддерживающая более старые версии Python и предоставляющая дополнительные возможности.
    pip install virtualenv
    virtualenv myenv
    source myenv/bin/activate
  • pipenv: Объединяет функциональность pip и virtualenv, упрощая управление зависимостями и окружениями с помощью файла Pipfile.
    pip install pipenv
    pipenv install
    pipenv shell
  • Poetry: Как упомянуто выше, включает функциональность управления виртуальными окружениями по умолчанию, создавая их автоматически для каждого проекта.

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