itstnd@yandex.ru

Консультации

Разработка и поддержка сайтов

Python. Как установить пакеты offline.

 python    

Бывает случай когда необходимо установить пакеты offline. Скачивание пакетов в указанную папку нужно, когда на целевой машинке нет доступа к репозиториям или к Интернет в целом. В таком случае вам поможет эта короткая инструкция. Нужно подготовить всё на машине , где есть доступ, затем перенести на целевую, и там уже установить пакеты offline

Скачивание пакетов в указанную папку

1. Базовый способ скачивания

pip download -r requirements.txt -d ./offline_packages

-d ./offline_packages — директория, куда будут сохранены все .whl файлы

Эта команда скачает все пакеты и их зависимости

2. С учетом архитектуры и версии Python

Чтобы скачать пакеты именно для нужной платформы (например, для Linux x86_64):

pip download -r requirements.txt -d ./offline_packages --platform manylinux2014_x86_64 --python-version 3.10 --only-binary=:all:
  • —platform — целевая платформа
  • —python-version — версия Python
  • —only-binary=:all: — скачивать только бинарные пакеты (.whl)

3. Скачивание для конкретной ОС

# Для Linux
pip download -r requirements.txt -d ./offline_packages --platform manylinux2014_x86_64

# Для Windows
pip download -r requirements.txt -d ./offline_packages --platform win_amd64

# Для macOS
pip download -r requirements.txt -d ./offline_packages --platform macosx_10_9_x86_64

Установка на хосте. Если нужно установить пакеты offline

Способ 1: Установка из скачанной папки

pip install --no-index --find-links ./offline_packages -r requirements.txt
  • —no-index — не обращаться к PyPI (интернету)
  • —find-links — путь к папке с пакетами

Способ 2: Если нужно установить конкретный пакет

pip install --no-index --find-links ./offline_packages django==4.2.0

Полный пример работы

# 1. Создаем виртуальное окружение
python3 -m venv venv
source venv/bin/activate

# 2. Скачиваем все пакеты в папку whl_cache
pip download -r requirements.txt -d ./whl_cache

# 3. Архивируем для переноса на другой хост
tar -czf packages.tar.gz whl_cache/

# 4. На хосте без интернета распаковываем и устанавливаем
tar -xzf packages.tar.gz
pip install --no-index --find-links ./whl_cache -r requirements.txt

Дополнительные полезные опции

Скачать с учетом конкретных версий Python

# Узнать версию Python на целевом хосте
python3 --version  # например, 3.10

# Скачать для этой версии
pip download -r requirements.txt -d ./whl_cache --python-version 3.10

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

Если у вас нет requirements.txt, создайте его:

pip freeze > requirements.txt

Скачать только если пакет отсутствует локально

pip download -r requirements.txt -d ./whl_cache --exists-action i
  • —exists-action i — игнорировать уже существующие файлы

⚠️ Важные нюансы

  1. Архитектура — убедитесь, что скачиваете пакеты для той же архитектуры, что и целевой хост
  2. Версия Python — версия Python должна совпадать
  3. Зависимости — pip download автоматически скачивает все зависимости
  4. Pure Python пакеты — они будут работать на любой платформе, проблем с ними нет

Для максимальной совместимости

# Скачать только pure Python пакеты (будут работать везде)
pip download -r requirements.txt -d ./offline_packages --no-binary :all:

# Или скачать для конкретной платформы
pip download -r requirements.txt -d ./offline_packages --platform manylinux2014_x86_64 --only-binary=:all:

Таким образом, вы получите папку offline_packages со всеми .whl файлами, которую можно перенести на любой хост без интернета!