-
Notifications
You must be signed in to change notification settings - Fork 91
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Requirements von Logiken und Userfunctions installieren beim Start? #579
Comments
Meinst Du eine Lösung wie:
|
Wenn das auf dem Parameter-Tab eingetragen werden kann, müsste es ja irgendwo gesichert werden - im Header der Logics- bzw. userfunctions-Datei? In dem Fall wäre das ein Wechsel der bisherigen Konvention, Metadaten in gesonderten Dateien zu speichern. Möglich wäre ggf.
Eine zusätzliche yaml-Datei wäre möglich, müsste aber von Hand gepflegt werden und gilt dann jeweils für alle Logiken bzw. UF, da scheint mir Variante 1 besser handlebar. |
Ich wäre für weder-noch. Meiner Meinung nach, würde die Information in die etc/logic.yaml gehören. Einen direkten Zusammenhang mit den Userfunctions sehe ich erstmal nicht. Logiken können ja einfach ein import Statement enthalten. Bei den Userfunctions Requirements zu hinterlegen ist noch mal ein weiteres Thema. Da muss ich noch mal drauf rumdenken. Eine Datei unter etc (analog zur etc/logic.yaml) könnte für Userfunctions auch noch ein anderes Problem lösen, das ich habe: Wenn ich eine Userfunctions Datei disablen möchte, muss ich bisher die .py Datei umbenennen (andere Endung dran). Es gibt bisher dafür keinen "Schalter". |
Nei den Userfunctions könnte man das auch analog zu Plugins, dem lib Verzeichnis, … lösen. In das functions Verzeichnis könnte man eine requirements.txt legen und shpypi könnte diese Datei mit in den Aufbau der Gesamt-Requirements aufnehmen. |
Ich habe lib.shpypi erstmal so erweitert, dass in den Verzeichnissen ../logics und ../functions gespeicherte requirements.txt Dateien mit ausgewertet werden. In den generierten Dateien werden die Einträge als **user-defined'' gelistet. In der requirements/conf-all.txt sieht das z.B. dann so aus:
Das ist noch nicht die eleganteste Version (da Logiken ja häufig in der Admin GUI geschrieben/modifiziert werden und man für die Requirements noch in den Maschinenraum muss, aber es ist erstmal eine praktikable Lösung. Die requirements.txt Dateien werden im Konfigurations-Backup mit gesichert. |
Macht es nicht Sinn die requirements direkt in die User-Funktion oder Logik auszulagern. Also irgendwie als Kommentar oder in einer Variable im Code? Also so z.B.: #requirements: pymodbus>='3.5.2' oder VIelleicht denke ich da zu naiv. Aber wäre die Auswertung aufwändig? |
Ich glaube, die meisten Ideen, die nicht auf einer requirements.txt basieren, dürften einfach daran scheitern, dass die requirements bei Laden von shng geprüft werden, die Logiken aber erst beim Starten geladen werden. Die notwendigen Informationen (nicht zuletzt die notwendigen/konfigurierten Verzeichnisse) stehen zu dem Zeitpunkt noch gar nicht zur Verfügung. Ich halte es da für praktikabler, eine logics/requirements.txt (und analog) zu lesen, und wenn im Admin-UI die Logiken bearbeitet werden, könnte man die ggf. dort auf eine solche Zeile hin parsen, die dann an die requirements.txt angefügt wird. Das scheint mir aber noch ein langer Weg zu sein; und persönlich halte ich das nicht für dringlich über die schon vorhandene Implementation der requirements.txt hinaus. |
Zum jetzigen Zeitpunkt erstmal erledigt, da requirements gelesen und berücksichtigt werden. Weitere Verbesserungen sind später im Rahmen Erweiterung core/admin-ui noch möglich. |
Ich habe eben mal danach geschaut aber keine Dokumentation dazu gefunden. Es ist zwar in den Release Notes zu 1.10 zu lesen das in |
Ab und zu gibt es Bibliotheken, die in Logiken oder Userfunctions genutzt werden. Diese Abhängigkeiten werden derzeit nicht berücksichtigt bei der Installation von Abhängigkeiten beim Systemstart.
Vielleicht könnte man das auf irgendeine Art berücksichtigen?
The text was updated successfully, but these errors were encountered: