Способы установки заданной версии модуля в Python

Раздел: Python -> Пакеты

Методы установки пакета с указанием версии

Наиболее прямой и эффективный способ установки пакета определённой версии в Python - это использование менеджера пакетов pip с явным указанием номера версии после символов ==. Такой подход подходит для единоразовой установки в текущем окружении, когда разработчику точно известно, какая версия требуется.

pip install requests==2.28.1

Pip upgrade package python (обновление пакета через pip)

После выполнения команды pip загружает указанную версию из репозитория PyPI и устанавливает её вместе с зависимостями, также фиксируя их версии (если явно не указано иное). Проверить, что установилась именно нужная версия, можно командой:

pip show requests

Python pip update package (обновление пакета через pip update)

Вывод покажет строку Version: 2.28.1.

Типичная ошибка: ERROR: Could not find a version that satisfies the requirement requests==2.28.1. Причины: опечатка в названии пакета или версии, версия ещё не опубликована на PyPI, используется ограниченный индекс (например, при работе с частным репозиторием). Решение: проверить точное написание на pypi.org, убедиться, что версия существует, или временно отключить дополнительные индексы с помощью флага --index-url.

Как зафиксировать версии всех зависимостей проекта в файле?

При разработке приложений часто требуется, чтобы все участники команды или сборочные системы использовали одни и те же версии пакетов. Для этого применяется файл requirements.txt, в который выписываются пакеты с фиксированными версиями.

flask==2.3.2
requests==2.31.0
numpy==1.24.3

Python build package (сборка пакета python)

Установка осуществляется одной командой:

pip install -r requirements.txt

Python download package (скачивание пакета python)

Такой способ гарантирует идентичность окружения. Ошибки возникают, если в файле присутствуют несовместимые зависимости - pip сообщит о конфликте версий. В этом случае приходится вручную корректировать файл или использовать более продвинутые инструменты (Poetry, Pipenv).

Ошибка Cannot install -r requirements.txt... conflict. Решение: запустить pip check для выявления противоречий, затем отредактировать файл, выбрав совместимые комбинации. Альтернатива - использовать pip-compile из пакета pip-tools для автоматического разрешения зависимостей.

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

Инструмент Pipenv автоматически создаёт и управляет виртуальным окружением, записывая точные версии в файлы Pipfile и Pipfile.lock. Для установки пакета нужной версии команда выглядит так:

pipenv install requests==2.28.1

Python pip install local package (установка локального пакета через pip)

Pipenv обновляет Pipfile и создаёт или обновляет Pipfile.lock, фиксируя все зависимости. Преимущество: окружение изолируется автоматически, а файл блокировки гарантирует воспроизводимость.

Проблема: при выполнении pipenv install может возникнуть ошибка Pipenv: installation failed из-за отсутствия Python нужной версии. Решение: указать версию Python через --python или проверить установленный интерпретатор.

Каким образом poetry помогает фиксировать версии?

Современный менеджер Poetry использует собственный формат файла pyproject.toml и создаёт poetry.lock для точной привязки версий. Установка определённой версии выполняется командой:

poetry add "requests@2.28.1"

Python install package version (установка пакета определенной версии в python)

Poetry добавляет запись в pyproject.toml и синхронизирует зависимости в lock-файле. Если необходимо обновить только один пакет до конкретной версии, можно использовать флаг --lock.

Ошибка Poetry resolution failed возникает, когда указанная версия несовместима с другими зависимостями. Решение: ослабить ограничение (например, "^2.28" вместо точной версии) или пересмотреть дерево зависимостей командой poetry show --tree.

Как указать версию при установке через conda?

Для пользователей дистрибутива Anaconda или Miniconda установка пакета определённой версии производится командой:

conda install numpy=1.24.3

модули python linux (модули python в linux)

Здесь используется один знак равенства. Conda может также устанавливать зависимости из каналов conda-forge, если флаг -c conda-forge добавлен. Если нужной версии нет в канале, возникает ошибка PackagesNotFoundError. Решение: переключиться на основной канал defaults или добавить другой канал.

Ошибка UnsatisfiableError означает, что версия несовместима с текущим окружением. Рекомендуется создать новое окружение с чистыми зависимостями: conda create -n myenv python=3.10 numpy=1.24.3.

Как установить пакет версии, взятой из Git-репозитория?

Иногда нужная версия пакета ещё не опубликована на PyPI, но доступна в репозитории с тегом или коммитом. pip позволяет устанавливать напрямую из Git:

pip install git+https://github.com/psf/requests.git@v2.28.1

Update lib python (обновление библиотек python)

После @ указывается метка (тег, ветка или хэш коммита). Такой способ полезен для тестирования предрелизных версий или исправлений, ещё не попавших в официальный релиз. Ошибки возникают при некорректном URL или отсутствии сети. Решение: проверить доступность репозитория и правильность ссылки.

Ошибка ERROR: Command errored out with exit status 1 часто связана с отсутствием необходимых инструментов сборки (setuptools, wheel, GIT). Установка pip install wheel setuptools и проверка наличия git в системе решает проблему.

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

Если пакет был заранее скачан в виде .whl или .tar.gz, его можно установить напрямую без обращения к PyPI. Пример для wheel:

pip install ./dists/requests-2.28.1-py3-none-any.whl

Python packages list (список установленных пакетов)

Для архива с исходным кодом:

pip install ./dists/requests-2.28.1.tar.gz

Remove python package (удаление пакета python)

Такой подход применяется в окружениях без доступа в интернет (air-gapped) или для ускорения повторной установки. Ошибка is not a supported wheel on this platform означает, что файл собран для другой операционной системы или разрядности Python. Решение: найти или собрать корректный wheel для используемой платформы.

Если установка из архива завершается с ошибкой сборки, скорее всего отсутствуют компиляторы (gcc, Visual C++). Установите соответствующий инструментарий или используйте предварительно собранный wheel.

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

Иногда требуется не точная версия, а диапазон, исключающий нежелательные релизы. pip поддерживает операторы сравнения: >=, <=, >, <, !=. Пример:

pip install "requests>=2.28,<2.29"

Эта команда установит последнюю доступную версию из диапазона от 2.28.x (включительно) до 2.29.0 (исключительно). Диапазоны удобны, когда требуется совместимость с минимальной версией, но не хочется жёстко фиксировать патч-версию. Ошибка возникает, если в диапазон не попадает ни одна версия - pip выведет предупреждение и завершится с ошибкой. Решение: расширить диапазон или указать точную версию.

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

- Apt get python (установка python через apt-get)
- Windows package python (установка пакетов python на windows)
- установка pandas python (установка библиотеки pandas в python)

Расширенные примеры установки пакетов с версией

Пример
# Установка из частного PyPI с указанием версии
pip install --index-url https://my-private-repo.com/simple mypackage==1.0.0
Successfully installed mypackage-1.0.0

В примере использован флаг --index-url для переопределения стандартного репозитория. Это полезно для корпоративных сред.

Пример
# Установка с предварительными (pre-release) версиями
pip install --pre mypackage==2.0.0b1
Successfully installed mypackage-2.0.0b1

Флаг --pre разрешает установку бета-версий и release candidate. Без него pip игнорирует такие версии.

Пример
# Установка версии из git-репозитория с конкретным коммитом
pip install git+https://github.com/author/repo.git@abc123def456
Collecting repo from git+https://...
  Cloning https://... to /tmp/pip-...
  Running setup.py install for repo ... done
Successfully installed repo-0.1.dev0+abc123d

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

Пример
# Установка из архива с проверкой хэша
pip install --hash=sha256:abcdef... ./mypackage-1.0.0.tar.gz
Successfully installed mypackage-1.0.0

Флаг --hash позволяет верифицировать целостность загружаемого файла. При несовпадении хэша pip выдаст ошибку безопасности.

Пример
# Блокировка версий с помощью pip-tools (pip-compile)
pip install pip-tools
echo "requests>=2.28" > requirements.in
pip-compile requirements.in --output-file=requirements.txt
#
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#    pip-compile requirements.in
#
certifi==2023.7.22
  # via requests
charset-normalizer==3.2.0
  # via requests
idna==3.4
  # via requests
requests==2.31.0
  # via -r requirements.in
urllib3==1.26.16
  # via requests

Инструмент pip-compile из пакета pip-tools генерирует полный список зависимостей с точными версиями, решая конфликты. Этот список затем используется в pip install -r requirements.txt.

Пример
# Принудительная переустановка определённой версии с очисткой кэша
pip install --no-cache-dir --force-reinstall requests==2.28.1
Successfully uninstalled requests-2.31.0
Successfully installed requests-2.28.1

Комбинация --no-cache-dir (не использовать локальный кэш) и --force-reinstall гарантирует, что будет установлена указанная версия, даже если более новая уже присутствует в кэше или в окружении.

Пример
# Установка версии с игнорированием внешних зависимостей (isolated build)
pip install --no-deps mypackage==1.0.0
Successfully installed mypackage-1.0.0

Флаг --no-deps отключает установку зависимостей пакета. Применяется, когда все необходимые пакеты уже установлены или требуется минимальная установка для тестирования.

Пример
# Установка версии из собранного wheel с именем, не соответствующим платформе (требуется --only-binary)
pip install --only-binary=:all: .\windows_x86_64\mypackage-1.0.0-cp39-cp39-win_amd64.whl
Successfully installed mypackage-1.0.0

Флаг --only-binary=:all: запрещает сборку из исходников, что полезно при установке предварительно собранного колеса, особенно в системах без компилятора.

Пример
# Использование pip freeze для экспорта точных версий текущего окружения
pip freeze > frozen_requirements.txt
cat frozen_requirements.txt | head -n 5
certifi==2023.7.22
charset-normalizer==3.2.0
idna==3.4
requests==2.31.0
urllib3==1.26.16

Команда pip freeze выводит все установленные пакеты с версиями. Этот вывод легко использовать в requirements.txt для точного клонирования окружения.

Установка пакета определенной версии в Python - comments

En
Python install package version (python)