установка пакетов python без интернета и использование исходного кода as.смола.gz и.whl
мы пытаемся установить пару пакетов Python без интернета.
For ex : python-keystoneclient
для этого у нас есть пакеты, загруженные из https://pypi.python.org/pypi/python-keystoneclient/1.7.1 и сохранил его на сервере.
однако при установке tar.gz и .WHL пакеты, установка ищет зависимые пакеты для установки в первую очередь. Поскольку на сервере нет подключения к интернету, он получает сбой.
для ex : Для python-keystoneclient у нас есть следующие зависимые пакеты
stevedore (>=1.5.0)
six (>=1.9.0)
requests (>=2.5.2)
PrettyTable (<0.8,>=0.7)
oslo.utils (>=2.0.0)
oslo.serialization (>=1.4.0)
oslo.i18n (>=1.5.0)
oslo.config (>=2.3.0)
netaddr (!=0.7.16,>=0.7.12)
debtcollector (>=0.3.0)
iso8601 (>=0.1.9)
Babel (>=1.3)
argparse
pbr (<2.0,>=1.6)
когда я пытаюсь установить пакеты один за другим из приведенного выше списка, снова ищем вложенную зависимость .
есть ли способ, мы могли бы перечислить все зависимые пакеты для установки модуля python, такого как python-keystoneclient.
3 ответов
вот как я справляюсь с этим делом:
на машине, где у меня есть доступ к интернету:
mkdir keystone-deps
pip download python-keystoneclient -d "/home/aviuser/keystone-deps"
tar cvfz keystone-deps.tgz keystone-deps
затем переместите файл tar на конечный компьютер, который не имеет доступа в Интернет, и выполните следующие действия:
tar xvfz keystone-deps.tgz
cd keystone-deps
pip install python_keystoneclient-2.3.1-py2.py3-none-any.whl -f ./ --no-index
у нас аналогичная ситуация на работе, где производственные машины не имеют доступа к Интернету; поэтому все должно управляться в автономном режиме и вне хоста.
вот что я пробовал с различным количеством успеха:
basket
это небольшая утилита, которую вы запускаете на своем хосте, подключенном к интернету. Вместо того, чтобы пытаться установить пакет, он вместо этого загрузит его, и все остальное, что требуется для установки в справочник. Затем этот каталог перемещается на целевой компьютер. Плюсы: очень прост и удобен в использовании, нет головных болей сервера; нет портов для настройки. Минусы: нет никаких реальных showstoppers, но самый большой из них является то, что он не уважает любую версию закрепления вы можете иметь; он всегда будет загружать последнюю версию пакета.запустите локальный сервер pypi. Используется
pypiserver
иdevpi
.pypiserver
очень прост в установке и настройке;devpi
требуется немного больше finagling. Они оба делают то же самое - действуют как прокси/кэш для реального pypi и как локальный сервер pypi для любых домашних пакетов.localshop
это новый, которого не было, когда я смотрел, у него также есть та же идея. Итак, как это работает, ваша машина с ограниченным доступом в интернет будет подключаться к этим серверам, затем они подключаются к Интернету, чтобы они могли кэшировать и прокси-сервер фактического репозитория.
проблема с второй подход заключается в том, что хотя вы получите максимальную совместимость и доступ ко всему репозиторию пакетов Python, вы все равно должны убедиться, что все зависимости установлены на вашей целевой машины (например, все заголовки на базе драйверов и утилит). Кроме того, эти решения не обслуживают репозитории, отличные от PyPI (например, пакеты, размещенные на github).
мы получили очень далеко со вторым вариантом, хотя, поэтому я бы определенно рекомендовал он.
в конце концов, устав от проблем совместимости и библиотек, мы перенесли весь цирк серверов в коммерчески поддерживаемые контейнеры docker.
это означает, что мы отправляем все предварительно настроенные, ничего на самом деле не нужно устанавливать на производственных машинах, и это было самое бесплатное решение для нас.
мы заменили репозитории pypi локальным сервером изображений docker.
pipdeptree
- утилита командной строки для отображения пакетов python, установленных в virtualenv в виде дерева зависимостей.
Просто использовать его:
https://github.com/naiquevin/pipdeptree