Seite 1 von 1

setup.py für Programm erstellen

Verfasst: Dienstag 29. Oktober 2019, 21:51
von JakobDev
Ich möchte eine setup.py für mein Programm erstellen, da z.B. snapcraft eine verlangt. Sprich: Das Programm soll zu einem normalen Modul werden.

Dabei gibt es jedoch folgende Probleme:
-In einem Modul wird mit relativen imports gearbeitet z.B. from .Beispiel import xyz statt from Beispiel import xyz. Mein Programm soll sich jedoch auch weiterhin durch einfaches ausführen von jdTextEdit.py starten lassen.
-Das Programm hat Plugins (momentan ist nur 1 vorinstalliert) die als Modul geladen werden. Das soll selbstverständlich auch danach noch funktionieren.

Könnte jemand mit Erfahrung in solchen Dingen mal danach sehen?

Re: setup.py für Programm erstellen

Verfasst: Samstag 2. November 2019, 12:24
von JakobDev
Kann niemand helfen?

Re: setup.py für Programm erstellen

Verfasst: Samstag 2. November 2019, 12:32
von __deets__
Die Sammlung nicht der Konvention entsprechend bennanter Module auf der obersten Ebene sind ungewoehnlich. Das macht man so nicht. Die sollten klein geschrieben werden, und alle in einem Paket mit einem sinnvollen Namen stecken. ZB jdtextedit. Auch die ganzen Unterverzeichnisse und deren Module gehoeren da hinein.

Und dann schreibst du eine setup.py, die einen console_scripts Entry-Point hat. Das erstellt dir dann das notwendige Kommando zum starten. Wenn du trotzdem darauf bestehst ein Skript dafuer zu verwenden, schreib ein *minimales* Skript, das anhand der __file__-Variable das Hauptverzeichnis in sys.path packt, und dann importierst du deine main und rufst die auf.

Re: setup.py für Programm erstellen

Verfasst: Montag 4. November 2019, 15:02
von JakobDev
Ich habe das Programm jetzt in ein Modul gepackt. Das Ergebnis findet sich hier. Ein Problem gibt es allerdings: Wenn ich es per setup.py installiere, sind die eingebauten Plugins (momentan nur eins) nicht vorhanden. Wenn ich es per ./jdTextEdit.py starte sind sie schon vorhanden. Das ganze lässt sich leicht überprüfen, indem man schaut, ob sich im Bearbeitenmenü der Punkt "Pluginmanager" befindet. Wenn Ja, wurde das Plugin geladen. Das erstellen einer leeren __init__.py im plugins Ordner hat auch nichts gebracht. Kannst du mir da gerade helfen? Die Funktion zum laden der Plugins findet sich in der Functions.py

Re: setup.py für Programm erstellen

Verfasst: Montag 4. November 2019, 21:14
von __deets__
Ich sehe nicht, wo die Plugins stehen sollten. Laut https://gitlab.com/search?utf8=%E2%9C%9 ... 166126#L15 ist das Asiaten der auf einem Pfad. Der hat sich natürlich geändert. Du solltest so eine Funktionalität per logging dazu bringen zu erzählen was da vor sich geht, denn auch deine User werden so ein Problem haben.

Re: setup.py für Programm erstellen

Verfasst: Montag 4. November 2019, 21:44
von JakobDev
Es gibt zwei Orte, wo die Plugins sein können: Im Ordner "plugins" im Programmverzeichnis (das ist der Ordner, um den es hier geht) und der Ordner "plugins" im Speicherordner, wo die Nutzer, wie in einem Tipp des Tages erwähnt, ihre Plugins hin kopieren können. Beide Ordner werden der sys.path hinzugefügt und die Plugins dann als Modul geladen. Der aktuelle Speicherornder lässt sich für den Nutzer bequem über das ? Menü öffnen.

Re: setup.py für Programm erstellen

Verfasst: Montag 4. November 2019, 21:59
von __deets__
Ich sehe kein Plugin in Plugins. Nur den Manager darunter, was weird ist.

Re: setup.py für Programm erstellen

Verfasst: Dienstag 5. November 2019, 16:45
von JakobDev
Der Pluginmanger ist selbst ein Plugin. Und momentan das einzige, was vorinstalliert ist.

Re: setup.py für Programm erstellen

Verfasst: Dienstag 5. November 2019, 16:47
von __deets__
Eh. Ok. Verstehe ich nicht wirklich :) Aber letztlich musst du das halt debuggen, warum das nach dem verschieben nicht mehr tut. Und das kannst du mit dem logging unterstuetzen.

Re: setup.py für Programm erstellen

Verfasst: Dienstag 5. November 2019, 16:57
von JakobDev
Das Plugin funktioniert problemlos. Wenn ich ich das Program direkt starte, ist alles in Ordnung. Nur das Problem ist, dass die setup.py den Pluginsordner nicht mitzunehmen scheint.

Re: setup.py für Programm erstellen

Verfasst: Dienstag 5. November 2019, 17:26
von __deets__
Du musst das auch zu nem Python-Package machen. Da fehlen zB __init__.py, die muessen da rein. Alternativ musst du an den zusaetzlichen Attributen fuer Dateien arbeiten.

Re: setup.py für Programm erstellen

Verfasst: Dienstag 5. November 2019, 19:38
von JakobDev
Dank der __init__.py funktioniert jetzt alles. Danke!