Сборочный пакет Debian: добавьте python virtualenv в dpkg-buildpackage для загрузки на панель запуска - PullRequest
0 голосов
/ 25 марта 2019

Я хотел бы упаковать программу Python и отправить ее в пакет deb.

По причинам (я знаю, что в 99% случаев это плохая практика) Я хочу отправить программу в виртуальную среду Python в пределахпакет debian.

Я знаю, что могу сделать это, используя dh-virtualenv.Это прекрасно работает - как правило, нет проблем.Но проблема возникает, когда я хочу загрузить это на панель запуска .Загрузка на панель запуска означает загрузку исходного пакета.В терминах dh-virtualenv исходный пакет - это описание пакета, в котором virtualenv еще не создан.

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

Таким образом, в основном есть два возможных решения:

Подход A

Подготовьте virtualenvи каким-то образом включить его в пакет исходного кода, и процесс сборки dh просто «переместит» этот подготовленный virtualenv в его конечное местоположение.Это может работать с virtualenv --relocatable. НО перемещение убирает маркер utf-8 в начале всех скриптов python, что приводит к поломке всех скриптов python в virtualenv.

Apporach B

Каким-то образом кэшируйте все необходимые пакеты Python в исходном пакете и устанавливайте dh_virtualenv из кэша, а не из PyPI.Это кажется выполнимым с pip2pi, но некоторые эксперименты показывают, что он не будет устанавливать пакеты, хотя они находятся в локальном индексе пакетов.

Оба подхода кажутся немного неуклюжими и склонными к ошибкам.Что ты думаешь об этом?Каковы ваши переживания?Что бы вы порекомендовали?

...