Различные install_requires в зависимости от ОС - PullRequest
0 голосов
/ 25 января 2020

Я унаследовал python проект, состоящий ровно из 1 python файла, который предназначен для установки и запуска на Linux. Я не знаю много о python и знаю гораздо меньше о Linux.

. В настоящее время существуют отдельные процессы сборки для Ubuntu, Fedora и Arch, которые создают DEB-файл, RPM-файл. и файл PKG.TAR.XZ соответственно. Затем пользователям необходимо go выполнить другой процесс установки в зависимости от их системы.

Одна из моих первых задач - консолидировать и упростить этот процесс для наших пользователей. После расследования выясняется, что Snap Store может быть хорошим решением. Похоже, что для Snap Store требуется setuptools .

Каждый из моих типов сборок зависит от разных требований. Например, для DEB и RPM требуется python3-suds, а для ARCH - python-suds. ARCH и RPM хотят libappindicator-gtk3, но DEB хочет gir1.2-appindicator3-0.1 и gir1.2-gtk-3.0.

Я не могу найти очевидный способ включить эти условные требования в мое свойство setup.py install_requires. Как бы вы go об этом? Или я совершенно не на том пути?

При ответе помните, что я новичок! Спасибо!

Ответы [ 2 ]

0 голосов
/ 31 января 2020

После долгих исследований я обнаружил, что, поскольку все приложения моментальных снимков построены на виртуальной машине Ubuntu, все, что необходимо, - это включить все зависимости Ubuntu, и процесс моментальных снимков объединит эти зависимости в приложении. Приложение будет работать на любой вкус Linux. Поэтому мне не нужно было пытаться писать условные зависимости в install_requires. Все, что мне нужно было сделать, это включить зависимости Ubuntu.

Я, наконец, пришел к такому выводу через этот очень полезный обзор, и мое собственное тестирование подтвердило его: https://medium.com/@abulka / getting- python -and-wx python -apps-in-the-ubuntu-app-store-ccca7ae537a3

Надеюсь, это поможет кому-то еще.

0 голосов
/ 27 января 2020

Сначала вы можете проверить https://www.flatpak.org/ Это похоже на Snap. Просто IMO чуть лучше.

При использовании Snap или Flatpak вам все равно, нужны ли вам python -суды или python3 -суды. Результат в основном контейнер. Вы просто выбираете среду исполнения, которую вы строите поверх нее, и решаете задачи там. Затем контейнер (будь то Snap of Flatpak) запускается на каждой ОС - будь то Ubuntu, Fedora или Arch. Он не имеет ничего общего с инструментами управления пакетами. Он изолирован.

...