Taming Python
Skill — Install python packages offline without internet
Skills Required
Please make sure to have all the skills mentioned above to understand and execute the code mentioned below. Go through the above skills if necessary for reference or revision
In this post we will learn how to use install python packages offline from files without internet
Use cases
Offline installation of python packages can be useful in the following scenarios
Install Python Modules offline

Installing a python module or package (any applications) is very easy if you have internet connection and access to public repo or private repo.
But what if your production server do not have internet access and your repo server do not have this package to be installed ?
Here is the simple scenario; I am automating Window machines using Ansible. For Windows modules to work I need pywinrm module to be installed on the Ansible machine and I do not have internet access on Ansible.
If the module or library do not have dependancies, then you simply download the package pypi.org/project/pywinrm and transfer this Ansible machine (or the machine which do not have internet access). But in our case, the pywinrm module have dependancies and we do not know what are the dependancies to be installed.
There is an easy method we can follow in this situation.
Download the package from connected machine
Create a directory as repository to keep the packages and dependancies.
From a machine which is connected to internet, download the packages and dependancies using pip download command. (We will download the package and dependancies to a directory to avoid mix-up)
Now transfer the directory and content to target machine (disconnected machine) – the Ansible controlnode in our scenario – using any of the available methods. (scp, sftp, winscp etc)
Install package on the disconnected machine
Verify the transferred packages and dependancy file; you will see all the .whl files inside.
Create a requirements.txt file with all filenames in the repo directory (eg: pywinrm-local )
Now Install the package using pip command by specifying the source repo directory.
Verify installed Python module
You can use this method for any complex python deployments but just need to make sure all the dependancies are downloaded to the same repo directory.
Менеджер пакетов pip: разбираемся с установкой дополнительных библиотек в Python

Ведь не все пакеты нужны в повседневной практике или отдельном проекте, да и места они занимают не мало. Для этих целей создан удаленный репозиторий модулей https://pypi.org/ , в котором на сегодня имеется более 260 тыс. проектов на все случаи практики программирования. Вам не обязательно создавать код с нуля, так как под многие задачи уже имеется соответствующий пакет.
Работа с этим хранилищем расширений осуществляется через команду pip . Имеется и другой установщик easy_install , но он применяется существенно реже. Таким образом, пакетный менеджер pip необходим для установки, обновления, удаления и управления модулями языка Python.
2. Подготовительные мероприятия
Как видно из ответа, на данном ПК используется python версии 3.8 и pip версии 20.2.3 .
В некоторых случаях (актуально для пользователей Linux или macOS ) требуется применять команду pip3 (если в результате выполнения pip определяет, что у вас установлен python версии 2 по умолчанию). Это связано с тем, что на *nix системах присутствуют сразу обе версии языка.
Также если на вашем компьютере имеется несколько версий языка Python (например, 3.6 , 3.8 , 3.9 ), то менеджер пакетов может применяться отдельно для каждой из них:
3. Установка и удаление пакетов
При разработке сложных проектов может понадобиться установка большого количества модулей. Постоянно их скачивать из репозитория PyPi трудоемко. Для этого разработан способ загрузки пакетов локально. Они могут находиться в архивах ( *.tar.gz ) или специальных файлах с расширением .whl . Это удобно и в том случае, если нет доступа в интернет у выбранной машины, и вы заранее создали пакет со всеми необходимыми библиотеками.
Для примера запакуем модуль numpy в «колесо» ( wheel ) и установим его оттуда.
Вначале мы создали специальный локальный пакет NumPy и поместили его в текущую папку (о чем свидетельствует точка). В директории создался файл numpy-1.19.2-cp38-cp38-win32.whl . На его основании даже без интернета мы легко сможем установить данную библиотеку. Команда «—no-index» говорит о том, чтобы мы не искали модуль в репозитории PyPi , а —find-links принудительно указывает место расположения пакета. Когда речь идет о сотне пакетов, это очень удобно. Правда для этого необходимо освоить еще один инструмент: набор зависимостей (о нем – следующий раздел).
Рассмотрим вопрос удаления модулей. Если требуется удалить один пакет, то делается это по аналогии с установкой:
Читайте также
4. Файлы требований для управления пакетами
Серьезные и многоуровневые приложения никогда не обходятся одной библиотекой. Даже когда вы устанавливали тот же NumPy , вы могли заметить, что помимо самого модуля скачивались дополнительные пакеты, которые мы не запрашивали. Естественно они необходимы для правильной работы NumPy . Но откуда известно, что они нужны?
Как установить пакеты в автономном режиме?
Как лучше всего загрузить пакет Python и его зависимости от pypi для автономной установки на другом компьютере? Есть ли простой способ сделать это с помощью pip или easy_install? Я пытаюсь установить библиотеку запросов на компьютер FreeBSD, не подключенный к Интернету.
задан 18 июн ’12, 22:06
12 ответы
В системе, имеющей доступ к Интернету
Пип download Команда позволяет загружать пакеты без их установки:
pip download -r requirements.txt
(В предыдущих версиях pip это записывалось pip install —download -r requirements.txt .)
В системе, которая не имеет доступа к Интернету
Тогда вы можете использовать
pip install —no-index —find-links /path/to/download/dir/ -r requirements.txt
для установки загруженных модулей без доступа к сети.
Создан 12 июля ’21, 06:07
проблема в том, что у зависимостей могут быть другие зависимости, и они не будут загружены. — Викки
@vikki Неправда, «pip install —download» также загружает зависимости, поэтому приведенные выше команды будут работать правильно, даже если ваши требования имеют дополнительные зависимости. Змеиная корзина может делать и другие полезные вещи (никогда ею не пользовалась), но по этой причине она определенно не нужна. — Карл Мейер
@vikki Я понимаю, что вы говорите, но я говорю вам, что это неправда 🙂 Вам действительно следует попробовать, прежде чем снова публиковать то же утверждение. Я просто поместил «pytest» в файл requirements.txt, запустил «pip install —download . -r requirements.txt», и он загрузил sdists для pytest и его зависимости setup.py, «py». — Карл Мейер
Как и @vikki, для меня это также не загрузило весь граф зависимостей. Тем не менее, я все еще ценю ответ, так как отсутствовал только один пакет, и я просто явно добавил его в файл requirements.txt. — Жакдерида
Думаю, должно быть: —find-links file:/path/to/some/dir/ и вы должны загрузить и установить ту же версию pip, иначе это может привести к сбою — А. Бинзхххххх
Если вы хотите установить библиотеки Python и их зависимости в автономном режиме, выполните следующие действия на машине с той же ОС, подключенной к сети и установленным Python:
1) Создайте requirements.txt файл с похожим содержимым (Примечание — это библиотеки, которые вы хотите загрузить):
Одним из вариантов создания файла требований является использование pip freeze > requirements.txt . В нем будут перечислены все библиотеки в вашей среде. Затем вы можете зайти в requirements.txt и удалить ненужные.
2) Выполнить команду mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse для загрузки libs и их зависимостей в каталог wheelhouse
3) Скопируйте файл requirements.txt в wheelhouse каталог
4) Заархивировать рулевую рубку в wheelhouse.tar.gz с tar -zcf wheelhouse.tar.gz wheelhouse
Затем загрузите wheelhouse.tar.gz на вашу целевую машину:
1) Выполнить tar -zxf wheelhouse.tar.gz извлечь файлы
2) Выполнить pip install -r wheelhouse/requirements.txt —no-index —find-links wheelhouse установить библиотеки и их зависимости

Это самый четкий ответ с правильными шагами для новичка. Спасибо — кумархарш
Это самый питонический способ, который я когда-либо видел. Спасибо! — пелуцца
но следуя твоему указанию, когда я pip install в итоге пишет: ОШИБКА: не удалось найти версию, удовлетворяющую требованию..` — ДеннисЛи
@DennisLi, какая у тебя версия Python и PIP? — Чаокуньян
Одна проблема с этим рабочим процессом — разные архитектуры. Если вы запустите pip download . на Mac у вас будет *-macosx*.whl файлы, которые нельзя использовать, например, в Linux — сосать
Если пакет находится на PYPI, загрузите его и его зависимости в какой-нибудь локальный каталог. Например
Некоторые пакеты, возможно, придется заархивировать в похожие на вид tar-архивы вручную. Я делаю это часто, когда мне нужна более свежая (менее стабильная) версия чего-либо. Некоторых пакетов нет в PYPI, поэтому к ним относится то же самое.
Предположим, у вас есть правильно сформированное приложение Python в
/src/myapp/setup.py будет install_requires список, в котором упоминается одна или несколько вещей, которые у вас есть в вашем /pypi каталог. Вот так:
Если вы хотите иметь возможность запускать свое приложение со всеми необходимыми зависимостями, продолжая его взламывать, вы сделаете что-то вроде этого:
Таким образом, ваше приложение будет выполняться прямо из исходного каталога. Вы можете взломать что-то, а затем перезапустить приложение, ничего не перестраивая.
Если вы хотите установить свое приложение и его зависимости в текущую среду Python, вы сделаете что-то вроде этого:
В обоих случаях сборка завершится ошибкой, если одна или несколько зависимостей отсутствуют в /pypi каталог. Он не будет пытаться беспорядочно установить недостающие вещи из Интернета.
Я настоятельно рекомендую вызвать setup.py develop . и easy_install . в рамках активного виртуальная среда чтобы не загрязнять вашу глобальную среду Python. Это (виртуальный то есть) в значительной степени путь. Никогда не устанавливайте ничего в глобальную среду Python.
Если машина, на которой вы создали свое приложение, имеет ту же архитектуру, что и машина, на которой вы хотите его развернуть, вы можете просто заархивировать весь каталог виртуальной среды, в который вы easy_install -ред все. Однако непосредственно перед архивированием вы должны сделать каталог виртуальной среды перемещаемым (см. — перемещаемый опция). ПРИМЕЧАНИЕ: на целевом компьютере должна быть установлена та же версия Python, а также любые зависимости на основе C, которые могут быть у вашего приложения, также должны быть предварительно установлены там (например, если вы зависите от ВВП, то должны быть предварительно установлены libpng, libjpeg и т. д.).