[gelöst] Python-Paketierung: Abhängigkeit zu PyPi Paket

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
buhtz
Beiträge: 1205
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

[gelöst] Python-Paketierung: Abhängigkeit zu PyPi Paket

Beitrag von buhtz » 20.04.2019 02:19:42

Meine eigenen Python-Anwendung hat Abhängigkeiten zu Paketen, die nur auf PyPi (also per pip3 install), aber nicht im debian repository, verfügbar sind.

Wie geht man damit im Fall einer Paketierung um - also wenn ich meine Anwendung ins Debian Repository bringen will? Gibt es da einen vorgesehen Weg, oder muss ich vorher wirklich dafür sorgen, dass das PyPi Paket auch ins eigenständig ins repository kommt?
Zuletzt geändert von buhtz am 29.05.2019 14:30:30, insgesamt 1-mal geändert.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Benutzeravatar
shoening
Beiträge: 914
Registriert: 28.01.2005 21:05:59
Lizenz eigener Beiträge: MIT Lizenz

Re: Python-Paketierung: Abhängigkeit zu PyPi Paket

Beitrag von shoening » 20.04.2019 12:55:21

Hallo,

für Python Anwendungen mit Abhängigkeiten, Du nur über PyPi aufgelöst werden können, richte ich mir immer eine VENV ein und installiere, die Anwendung dann in diesem Virtuellen Environment. Mir ein eigenes Debian-Repository dafür zu erzeugen, war mir zu aufwendig.

Für mps-youtube (bei dem die debian Fassung nicht so richtig funktionierte), habe ich das Verzeichnis /opt/pypi/mpsyt angelegt, und darin eine Virtuelle Umgebung erzeugt. Danach habe ich dann mps-youtube in der VENV installiert:

cd /opt/pypi/mpsyt
python3 -m venv .
bin/pip install mps-youtube youtube-dl

Damit ich das Programm einfacher starten kann, habe von /opt/pypi/mpsyt/bin/mpsyt einen Softlink in mein 'bin' Verzeichnis gelegt.

Ciao
Stefan
Bürokratie kann man nur durch ihre Anwendung bekämpfen.

tijuca
Beiträge: 301
Registriert: 22.06.2017 22:12:20

Re: Python-Paketierung: Abhängigkeit zu PyPi Paket

Beitrag von tijuca » 20.04.2019 15:42:43

Der "Debian Weg" ist die Paketierung mit dem/den Paket(en) zu beginnen was keine weitere Abhängigkeit haben, also quasi hinten anfangen mit dem Paketieren.

Wenn Du selber keine Berechtigungen besitzt um Pakete ins Archiv von Debian zu laden benötigst Du einen Sponsor. Der übliche Weg für so etwas geht über Mentors wenn Du keinen Developer kennst der Dein Paket prüfen und hochladen kann.

https://mentors.debian.net/

Mit einem speziellen Virtual Env kann man lokal natürlich auch arbeiten, aber mich hält so etwas immer davon ab Software mal näher anzuschauen da nur alle was wirklich davon haben wenn Python Software über den Paketverwaltungsdienst installiert werden kann. Wenn die Usptream Paket sich an die üblichen Python regeln halten ist ein Paketieren auch kein Hexenwerk, die Helfertools nehmen einem quasi alles ab. Wenn man jetzt neue Python Pakete paketieren will sollte man sich stark überlegen ob Python2 Support wirklich noch nötig ist. Das nächste Debian Release nach Buster wird mit ziemlicher Sicherheit kein Python2 mehr enthalten.

buhtz
Beiträge: 1205
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: Python-Paketierung: Abhängigkeit zu PyPi Paket

Beitrag von buhtz » 22.04.2019 03:06:52

Danke für den Hinweis mit den mentors. Dann hab ich ja noch n bisschen Arbeit vor mir. ;)

Zur Konkretisierung: Es ging mir darum (letztendlich) meine Software ins offizielle debian stable repository zu bekommen. Mir ist klar, dass dies nicht in einer Woche passiert. Und offensichtlich, wegen der nicht erfüllten Abhängigkeiten, durchaus im Jahresbereich landen könnte.

Nebenfrage: Wenn es mir nur um ein deb-file ginge (was meine User per Download von einer Website laden können), gibt es dann einen technisch relativ komfortablen Weg mit PyPi Abhängikeiten umzugehen? Vielleicht eine Art Installationsscript, dass die Pakete von PyPi nachlädt? Am pragmatischten wäre vermutlich eine aussagekräftige Fehlermeldung und Lösungsvorschlag an den User, wenn ein import nicht funktioniert.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: Python-Paketierung: Abhängigkeit zu PyPi Paket

Beitrag von eggy » 22.04.2019 12:02:57

Zuerst nachsehen, welche Abhängigkeiten Du verwendet hast und ob die wirklich nötig sind. Für Vieles gibts funktionsgleiche Alternativen die schon paketiert sind. Danach RFP für die verbleibenden nötigen Abhängigkeiten und nen ITP für Deinen Code erstellen, in den Erkllärungen jeweils auf die anderen Reports verweisen. Dann erstmal abwarten, ob es dazu Antworten gibt. Oftmals gibts gute Gründe, warum ein Paket noch nicht oder nicht mehr in Debian ist (Lizenzen etc). Nen Mentor suchen und mit dem das weitere Vorgehen absprechen.

Von so einem automatischen Installationsscript würde ich abraten: Gewöhnung Deiner User an nachdenkfreies Ausführen von Installationsscripten, ungewarteter Code auf dem Rechner, nicht nachvollziehbare Probleme mit dem Paketmanagment, ...

Btw für die Pythonpaketierung gibts ne spezielle Policy, hast die schon gelesen? https://www.debian.org/doc/packaging-ma ... on-policy/

tijuca
Beiträge: 301
Registriert: 22.06.2017 22:12:20

Re: Python-Paketierung: Abhängigkeit zu PyPi Paket

Beitrag von tijuca » 23.04.2019 17:27:12

buhtz hat geschrieben: ↑ zum Beitrag ↑
22.04.2019 03:06:52
Nebenfrage: Wenn es mir nur um ein deb-file ginge (was meine User per Download von einer Website laden können), gibt es dann einen technisch relativ komfortablen Weg mit PyPi Abhängikeiten umzugehen? Vielleicht eine Art Installationsscript, dass die Pakete von PyPi nachlädt? Am pragmatischten wäre vermutlich eine aussagekräftige Fehlermeldung und Lösungsvorschlag an den User, wenn ein import nicht funktioniert.
Meine ganz persönliche Meinung dazu? Vergiss das ganz schnell wieder, das ist definitiv nicht der Debian Weg. Und erinnert mich dann immer irgendwie an FrankenDebian.

Entweder Du entscheidest Dich komplett für PyPi only und/oder eben dafür Deine Software per Paketverwaltung in Debian installierbar zu haben. Beides schliesst sich ja nicht aus. Vorteil des Ganzen, Dein Paket ist auch automatisch in allen Downstream Projekten von Debian enthalten.

Um Deine Software ins (über)nächste Stable Release von Debian zu bekommen hast Du ausreichend Zeit, sind wohl ziemlich genau 2 Jahr von jetzt an. Ins aktuelle als auch das nächste Stable Release wird momentan mit Sicherheit nichts mehr wandern, Debian Buster ist aktuell im Full Freeze.

Wenn Du dich dazu entscheidest Deine Applikation zu paketieren und nach Debian zu bringen bedenke bitte auch, dass es dann 5 Jahre Security Support bekommen muss, ansonsten fliegt es auch gerne mal zu einer Pointrelease wieder raus wenn nicht andere Entwickler so nett sind das Paket mit zu pflegen. Es geht eine gewisse Verantwortung mit einher wenn Du ein Paket nach Debian bringen willst bzw. gebracht hast.

Wenn Du nun immer noch nicht abgeschreckt bist dann trage Dich ruhig auf der ML von Mentors ein und lese eine Weile mit, irgendwann wir dann der Zeitpunkt kommen wo Du deine Fragen dort so posten kannst das Du auch sinnvolle Antworten bekommst.

buhtz
Beiträge: 1205
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: Python-Paketierung: Abhängigkeit zu PyPi Paket

Beitrag von buhtz » 27.04.2019 11:33:26

Vielen Dank für die ausführliche Antwort. Ich werde dies beherzigen.
In Debian stable zu kommen, betrachte ich sozusagen als "Ritterschlag" und sehe natürlich auch die damit verbundenen Pflichten.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Antworten