Управление пакетами Python: от установки до автоматизации

Раздел: Настройка -> Управление библиотеками

Основные подходы к установке пакетов

Как установить библиотеку с изоляцией от системных пакетов?

Самым надёжным методом считается создание виртуального окружения и установка через pip. Это предотвращает конфликты зависимостей между проектами.

python -m venv myenv
source myenv/bin/activate   # Linux / macOS
myenv\Scripts\activate      # Windows
pip install requests

версия библиотеки python (версия библиотеки python)

После активации окружения все пакеты устанавливаются локально, не затрагивая системный Python. Для выхода из окружения используется команда deactivate.

Ошибка: PermissionError при создании venv в защищённой папке. Решение: указать другой путь или запустить терминал с правами администратора.

Ошибка: 'python' не найден. Решение: установить Python и добавить его в PATH.

Как установить библиотеку только для текущего пользователя?

Если права на запись в системные каталоги отсутствуют, применяется флаг --user:

pip install --user requests

установленные библиотеки python (установленные библиотеки python)

Пакет размещается в домашней папке пользователя. После установки может потребоваться добавить соответствующий каталог в переменную окружения PATH.

Предупреждение: 'requests.exe' is not on PATH. Решение: добавить папку Scripts (Linux/Mac) или Scripts (Windows) в PATH.

Как зафиксировать версию библиотеки?

Указание точной версии через двойной знак равенства:

pip install requests==2.28.0

Python libraries (библиотеки python)

Позволяет избежать неожиданных изменений при обновлении зависимостей. Допустимы также операторы >=, <=, ~=.

Ошибка: 'Could not find a version that satisfies the requirement requests==2.99.0'. Решение: проверить существование версии на PyPI или указать другую.

Как развернуть все зависимости проекта одной командой?

Файл requirements.txt содержит список пакетов с версиями. Установка выполняется так:

pip install -r requirements.txt

скачивание библиотек python (скачивание библиотек python)

Команда читает файл и устанавливает все перечисленные библиотеки. Такой подход удобен для воспроизведения окружения на разных машинах.

Ошибка: 'No matching distribution found for somepackage'. Решение: проверить правильность имени и версии, возможно пакет удалён или требует иной архитектуры.

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

Pipenv автоматически создаёт виртуальное окружение и ведёт учёт зависимостей в файлах Pipfile и Pipfile.lock:

pip install pipenv
pipenv install requests

Для активации окружения: pipenv shell, для установки из Pipfile: pipenv install.

Ошибка: 'Pipenv not found' после установки. Решение: установить глобально pip install pipenv или использовать python -m pipenv.

Как обеспечить современное управление зависимостями через Poetry?

Poetry предлагает декларативные конфигурации и автоматическое разрешение конфликтов версий:

pip install poetry
poetry add requests

После добавления библиотека попадает в pyproject.toml. Команда poetry install восстанавливает все зависимости.

Проблема: конфликт с уже установленными пакетами в системе. Решение: использовать изолированное окружение, которое Poetry создаёт автоматически.

Как установить библиотеку с не-Python зависимостями (например, numpy с MKL) через Conda?

Conda распространяет пакеты, включающие скомпилированные бинарные файлы, что упрощает установку научных библиотек:

conda install numpy

Если нужно указать канал: conda install -c conda-forge numpy. Conda сама разрешает зависимости, в том числе системные.

Ошибка: 'conda: command not found'. Решение: установить Miniconda или Anaconda и добавить её в PATH.

Проблема: смешивание conda и pip может привести к нестабильности. Рекомендуется использовать один менеджер для всех пакетов.

Как установить библиотеку без доступа к интернету (офлайн)?

Скачиваем wheel файл на машине с интернетом, переносим его на целевую систему и устанавливаем:

pip download requests -d ./packages   # скачивание
pip install requests --no-index --find-links ./packages   # установка

Ошибка: 'requests is not a supported wheel on this platform'. Решение: скачивать wheel для соответствующей версии Python и разрядности ОС.

Как установить неопубликованную версию из исходного кода?

Клонируем репозиторий и устанавливаем через pip:

git clone https://github.com/user/repo.git
cd repo
pip install .

Команда pip install . запускает setup.py, собирает пакет из исходников.

Ошибка: 'error: Microsoft Visual C++ 14.0 is required'. Решение: установить компилятор (Microsoft C++ Build Tools) или использовать готовый wheel.

Расширенные примеры команд и решений

Использование зеркала PyPI для ускорения загрузки

Если официальный репозиторий медленный или заблокирован, указывают альтернативный индекс:

Пример
pip install numpy -i https://mirror.yandex.ru/pypi/simple/

Результат:

Looking in indexes: https://mirror.yandex.ru/pypi/simple/
Collecting numpy
  Downloading numpy-1.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.3 MB)
Successfully installed numpy-1.26.0
Ошибка: 'Could not find a version that satisfies the requirement numpy'. Решение: проверить доступность зеркала или переключиться на другое (например, https://pypi.org/simple/).

Установка из приватного репозитория с дополнительным индексом

Для пакетов, хранящихся в корпоративном PyPI, используется флаг --extra-index-url:

Пример
pip install myinternalpackage --extra-index-url https://private.example.com/simple

Приоритет отдаётся основному индексу PyPI, затем проверяется дополнительный.

Установка без зависимостей (--no-deps)

Если требуется установить только сам пакет, игнорируя его зависимости (например, для тестирования):

Пример
pip install --no-deps requests

После выполнения в окружении появится только requests, его зависимости (urllib3 и др.) не будут установлены.

Установка пре-релизов (--pre)

Для получения альфа- или бета-версий пакетов добавляется опция --pre:

Пример
pip install --pre pandas

pip будет искать версии с пометкой alpha, beta, rc.

Создание requirements.txt из текущего окружения

Команда pip freeze выводит все установленные пакеты с версиями. Сохранение в файл:

Пример
pip freeze > requirements.txt

Содержимое файла:

certifi==2023.7.22
charset-normalizer==3.2.0
idna==3.4
requests==2.31.0
urllib3==2.0.4

Офлайн установка через скачивание всех зависимостей

Сначала на машине с интернетом загружаются все wheel-файлы вместе с зависимостями:

Пример
pip download scikit-learn -d ./offline_packages

Затем на изолированной машине:

Пример
pip install scikit-learn --no-index --find-links /path/to/offline_packages

Обновление самого pip

Старые версии pip могут некорректно обрабатывать зависимости. Обновление:

Пример
python -m pip install --upgrade pip

Результат:

Requirement already satisfied: pip in ./venv/lib/python3.11/site-packages (23.2.1)
Collecting pip
  Downloading pip-23.3.1-py3-none-any.whl (2.1 MB)
Successfully installed pip-23.3.1

Установка с опцией --break-system-packages (только для опытных)

В Python 3.12+ на некоторых дистрибутивах (например, Ubuntu) системный Python защищён от изменений. Для принудительной установки без виртуального окружения (не рекомендуется):

Пример
pip install --break-system-packages numpy
Это может нарушить работу системных утилит. Лучше создать виртуальное окружение.

Установка из requirements.txt с фиксацией хешей

Для обеспечения безопасности можно указать хеши файлов (требуется --hash в requirements.txt):

Пример
pip install --require-hashes -r requirements.txt

pip проверит, что загруженные пакеты соответствуют указанным хешам, и откажется устанавливать в случае несовпадения.

Скачивание библиотек Python - comments

En
скачивание библиотек python (python)