Автономная упаковка на питоне со всеми необходимыми пакетами в виде одной смолы или колеса, как толстый сосуд для Java - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу сгенерировать файл python tar или wheel, который будет содержать все пакеты (зависимости) в нем вместе с несколькими зависимыми проектными модулями.

У меня есть CLI-модуль на основе cliff , у нас есть Swagger SDK на основе нескольких питонов.

Я хочу собрать пакет с этим, который будет установлен в автономном режиме (без интернета) с помощью простой команды pip install build_package.zip.

1 Ответ

0 голосов
/ 02 ноября 2018

Вероятно, вам придется создать колесо для каждого проекта (т.е. для каждой зависимости). Затем установите их в порядке зависимости (для установки непосредственно колеса посмотрите этот вопрос ).

Если вы хотите, чтобы все находилось в одном архиве, вы можете просто сжать все колеса вместе. Сначала вы распаковываете их, и, наконец, устанавливаете каждое колесо одно за другим (вы можете встроить все в самораспаковывающийся архив, например, туда ).


Еще один более жадный подход - заархивировать все в вашем site-packages. Он расположен рядом с установленной корзиной для Python (т. Е. venv/lib/python2.7/site-packages для virtualenv с именем venv в Python 2.7). Тогда вам просто нужно распаковать все в site-packages вашей целевой машины.

Однако обратите внимание, что это предполагает, что как машина, которую вы используете для архивирования , так и целевой машины имеют одинаковую архитектуру и запускают одну и ту же версию python ... Кроме того, вам следует соблюдать осторожность при архивировании, поскольку у вас могут не потребоваться дополнительные зависимости, если вы, например, установили другие пакеты).


Последнее замечание. Полагаю, вы уже рассмотрели этот вариант, однако я бы порекомендовал вам пересмотреть. Разрешить установку проекта в режиме онлайн на самом деле менее громоздко, когда дело доходит до обработки версий (то есть, если все это делать вручную, вы потеряете управление версиями: pip install --upgrade ...).

...