Hallo zusammen!
Mein Projekt 'Firmware', hat schon erhebliche Ausmaße angenommen.
Ich habe mir deshalb überlegt, Module die einem bestimmten Aufgabengebiet zugeordnet sind, in jeweils einen separaten Unterordner zu stellen.
Für mich, würde die Aufteilung der Module in verschiedene Unterordner, eine klare und übersichtliche Struktur darstellen.
Mir ist auch bekannt, dass mit 'sys.append(sub_folder)', den entsprechenden Unterordner einbinden kann, um so auch die externen Module aufrufen zu können.
Trotz der geglaubten Einfachheit mit 'sys.append(sub_folder)' allein das Problem lösen zu können zeigt sich als falsch.
Nun möchte ich Euch fragen, ob es für die Verwendung externer Modulordner Konzepte gibt, die sich dem Problem angenommen haben?
Freue Mich über Euren Input!
Grüße Nobuddy
Konzept für das Einbinden externer Modulpfade
Hallo Mathias,
beim Googeln nach dem 'package Konzept', habe ich hier etwas gefunden.
http://py-tutorial-de.readthedocs.io/de ... tml#pakete
Bin mir aber nicht sicher, ob ich da richtig bin.
Wenn das Tutorial richtig ist, so sehe ich den Ansatz noch nicht, der mich weiter bringt.
Grüße Nobuddy
beim Googeln nach dem 'package Konzept', habe ich hier etwas gefunden.
http://py-tutorial-de.readthedocs.io/de ... tml#pakete
Bin mir aber nicht sicher, ob ich da richtig bin.
Wenn das Tutorial richtig ist, so sehe ich den Ansatz noch nicht, der mich weiter bringt.
Grüße Nobuddy
Denke, es hat etwas mit der '__init__.py' zu tun.
Wie ich sehe, wird die '__init__.py' im Hauptordner und jedem Unterordner erstellt.
Sind die Einträge in der '__init__.py' im Hauptordner und den Unterordnern gleich?
Wird die '__init__.py' vom Hauptordner zu den Unterordnern verlinkt?
Leider fehlt mir bis jetzt noch der zündende Funken ....
Vielleicht kann da jemand von Euch, mir ein Beispiel bringen, damit ich dies verstehe?
Mein Beispiel dazu:
In meinem Hauptordner befindet sich die 'firmware.py', sowie weitere Grundmodule.
Weiter sind im Hauptordner, Module die ein bestimmte Aufgaben erledigen und die ich gerne in Unterordner auslagern möchte.
Im Unterordner reportlab sind Module, die für das Erstellen von PDF-Dateien verantwortlich sind.
reportlab hat einen Unterordner mit dem Namen picture, in dem Grafiken für die Module in reportlab bereitgestellt werden.
In der 'firmware.py', füge ich den Pfad reportlab zu sys.path hinzu.
Danach funktionieren die Module aus reportlab genauso, wie wenn diese direkt im Hauptordner liegen würden.
Diese 'Aufgabenmodule' habe ich so erstellt, dass diese direkt aufgerufen werden können und Ihren Auftrag erledigen.
Nach dem hinzufügen des Basispfades in sys.path, funktioniert dies nun auch.
Beim ersten Versuch, habe ich dies genauso gehandhabt, funktionierte komischerweise aber nicht ...?
Was noch sonst zu beachten?
Würde mich über Eure Hilfestellung freuen!
Grüße Nobuddy
Wie ich sehe, wird die '__init__.py' im Hauptordner und jedem Unterordner erstellt.
Sind die Einträge in der '__init__.py' im Hauptordner und den Unterordnern gleich?
Wird die '__init__.py' vom Hauptordner zu den Unterordnern verlinkt?
Leider fehlt mir bis jetzt noch der zündende Funken ....
Vielleicht kann da jemand von Euch, mir ein Beispiel bringen, damit ich dies verstehe?
Mein Beispiel dazu:
In meinem Hauptordner befindet sich die 'firmware.py', sowie weitere Grundmodule.
Weiter sind im Hauptordner, Module die ein bestimmte Aufgaben erledigen und die ich gerne in Unterordner auslagern möchte.
Im Unterordner reportlab sind Module, die für das Erstellen von PDF-Dateien verantwortlich sind.
reportlab hat einen Unterordner mit dem Namen picture, in dem Grafiken für die Module in reportlab bereitgestellt werden.
In der 'firmware.py', füge ich den Pfad reportlab zu sys.path hinzu.
Danach funktionieren die Module aus reportlab genauso, wie wenn diese direkt im Hauptordner liegen würden.
Diese 'Aufgabenmodule' habe ich so erstellt, dass diese direkt aufgerufen werden können und Ihren Auftrag erledigen.
Nach dem hinzufügen des Basispfades in sys.path, funktioniert dies nun auch.
Beim ersten Versuch, habe ich dies genauso gehandhabt, funktionierte komischerweise aber nicht ...?
Was noch sonst zu beachten?
Würde mich über Eure Hilfestellung freuen!
Grüße Nobuddy
Habe http://py-tutorial-de.readthedocs.io/de ... tml#pakete einige male durchgelesen.
Wenn ich das nun richtig verstanden habe, erstellt man in jedem Unterordner der ein Modul beinhaltet, die '__init__.py'.
Danach kann ich dann mit 'from reportlab.modul import class', das Modul aus dem Unterordner reportlab aufrufen.
Habe ich das so richtig verstanden?
Grüße Nobuddy
Wenn ich das nun richtig verstanden habe, erstellt man in jedem Unterordner der ein Modul beinhaltet, die '__init__.py'.
Danach kann ich dann mit 'from reportlab.modul import class', das Modul aus dem Unterordner reportlab aufrufen.
Habe ich das so richtig verstanden?
Grüße Nobuddy