Gibt es einen standard-Weg zum erstellen von Debian-Paketen für die Verteilung von Python-Programmen?

Es gibt eine Tonne von Informationen auf, wie dies zu tun, aber da "es gibt mehr als einen Weg, um der Haut eine Katze", und alle die tutorials/Anleitungen, die Abdeckung ein bisschen den Prozess zu machen scheinen bestimmte Annahmen, die von anderen tutorials, die ich noch nicht geschafft, es zu begreifen.

Bisher dies ist, was ich glaube ich verstanden.

  1. Meine endgültige Ziel sollte sein, dass der Schaffung eines "binary" .deb-Paket. Ein solches Paket wird Plattform-unabhängig (32/64 bit) wie alle Python-Programme sind solche.
  2. Auf die Schaffung einer "binären" Paket muss ich zuerst erstellen Sie ein source-Paket.
  3. Zu erstellen, das source-Paket kann ich entweder CDBS oder debhelper. Debhelper ist die empfohlene Methode für Anfänger.
  4. Den Kern der Erstellung einer Quellcode-Paket ist, bevölkern die DEBIAN Verzeichnis im source-Verzeichnis mit Anzahl der Dateien klären, wo die Dateien kopiert werden müssen, was Urheberrecht und Lizenzierung unterliegen Sie, welche Abhängigkeiten Sie haben, etc...
  5. Schritt #4 kann weitgehend automatisiert werden, die dh_makeBefehl wenn das Python-source kommt auch mit einem distutils' setup.py Skript.

Nun meine Fragen:

  1. Ist mein Verständnis des Prozesses korrekt? Ist es etwas, was ich vermisse, oder was hab ich falsch gemacht?
  2. Schritt #5 ist wirklich mehr verwirrend für mich: insbesondere die zwei Punkte, bleibt sehr undurchsichtig für mich:
    • Wie Schreibe ich eine setup.py - Skript, die Installation einer stand-alone-Programm? EDIT: Von standalone-Programm ich meine ein Programm verwendet werden soll, indem Sie desktop-Benutzer (im Gegensatz zu einer Modul, die ich verstehe, wie eine Sammlung von Funktionen verwendet werden, die von anderen software, nachdem Sie importiert wurden). In meinem konkreten Fall würde ich tatsächlich brauchen zwei solche "Programme": das Hauptfenster der software und ein separates Dienstprogramm (in der Tat ein zweites "Programm" sollte in das gleiche Paket mit den anderen).
    • Was sind die Besonderheiten für ein solches Skript für DEB-Pakete? Die offizielle Dokumentation nur scheint der deal mit der U /MIN und Windows-Zeug...

BTW: das sind die besten Informationsquellen, die ich finden konnte, mich so weit. Wenn Sie etwas besser als diese, bitte teilen! 🙂

  • Bevor Sie vorbereiten können Sie ein python-Programm für Binär-Verpackung, müssen Sie bereiten Sie es für die Allgemeine Verteilung. Das ist die setup.py bit. Dies ist vergleichbar mit der autotools Schritt viele GNU C/C++ Projekte verwenden, aber spezifisch für python. Dies ist einfacher als es klingt, Lesen Sie docs.python.org/distutils/index.html
  • Danke, ich habe bereits die Allgemeine Idee (meine Formulierung mag falsch sein, aber das ist der Teil 5 der Prozess, den ich beschrieben). Was mich verwirrt ist, dass in den offiziellen Unterlagen, die ich nicht finden konnte, eine explizite how-to, wie zu verteilen Stand-alone-Programme statt-Module. Vielleicht ist es nur ein Terminologie-problem und das, was ich bezeichne als "standalone-Programme" sind ein bestimmter Typ der Module?
  • Sie können die install-Skripte, D. H. ausführbare Dateien starten Sie Ihr Programm. Siehe docs.python.org/distutils/setupscript.html#installing-scripts
  • Ich habe gelesen, dass vor, aber ich bin immer noch verwirrt: mein Programm hat eine main.py - Datei (ich nehme an, Sie nennen könnte es ein "Skript") UND eine Reihe von Modulen UND einigen anderen YAML-und SVG-Dateien... ich bin immer noch kämpfen, um zu finden, die klare Dokumentation, wie Sie zu erreichen. Die beste die ich finden konnte, so weit ist die distutils-tutorial, die ich noch am studieren...
  • Durch das standalone-Programm meinst du etwas, was nicht python, als Abhängigkeit? Die jüngsten Veröffentlichungen von Debian und Ubuntu, beide kommen mit mindestens python 2.6, so dass, wenn Sie code 2.6-kompatibel, ein "standalone-Programm" kann in der Tat nur ein besonderer Fall von einem Modul, wie Sie vorgeschlagen.
  • Danke für das Auffinden der Zweideutigkeit meiner Terminologie, versuchte ich zu klären, durch Bearbeiten der ursprünglichen Frage oben.
  • Machen Sie ein kleines python/shell-Skript, das startet dein Programm. Dies könnte so einfach wie python /path/to/program.py. Machen Sie es ausführbar und legen Sie es irgendwo wie /usr/local/bin. Dies sollte ausreichen, um das Verhalten, die Sie wollen.
  • Ja, all das sollte möglich sein. Ihre main.py ist ein Skript, Ihre anderen Python-Dateien sind wahrscheinlich ein Paket (oder mehreren Paketen). Die YAML-und SVG-Dateien sind Paket-Daten oder Daten-Dateien.
  • Ich denke, was Sie tun möchten, ist etwas gemeinsames in Debian, aber nicht nativ unterstützt von distutils: Sie Haben eine Anwendung, bestehend aus Modulen und einem Läufer-Skript, ohne die Module installiert und der öffentlichkeit zugänglich gemacht in site-packages. Gajim zum Beispiel nicht, dass durch die Installation-Module in /usr/share/gajim und Bearbeiten sys.Pfad in der Läufer-Skript.
  • Es sieht aus als ob das Ubuntu-Referenz verschoben und ist nun "deprecated". Aber ich habe nicht vor Ort eine Erklärung, warum es als veraltet betrachtet.
  • mögliche Duplikate von Wie mache ich Debian packaging von Python-package?

InformationsquelleAutor mac | 2011-08-18
Schreibe einen Kommentar