Я хотел бы упаковать программу 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
, но некоторые эксперименты показывают, что он не будет устанавливать пакеты, хотя они находятся в локальном индексе пакетов.
Оба подхода кажутся немного неуклюжими и склонными к ошибкам.Что ты думаешь об этом?Каковы ваши переживания?Что бы вы порекомендовали?