Konzept für das Einbinden externer Modulpfade

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nobuddy
User
Beiträge: 997
Registriert: Montag 30. Januar 2012, 16:38

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
mkiever
User
Beiträge: 19
Registriert: Mittwoch 4. März 2009, 18:06
Wohnort: Braunschweig

Hallo,

wichtigstes Thema wäre wohl sich in das package Konzept von Python und den Zusammenhang mit dem Pfad
einzulesen. Einfach den Pfad zu erweitern ist sicherlich zu kurzsichtig.

Grüße,
Matthias.
Nobuddy
User
Beiträge: 997
Registriert: Montag 30. Januar 2012, 16:38

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
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Nobuddy: Das Package-Konzept ist genau das, was Du suchst. Was gefällt Dir daran nicht?
Nobuddy
User
Beiträge: 997
Registriert: Montag 30. Januar 2012, 16:38

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
Nobuddy
User
Beiträge: 997
Registriert: Montag 30. Januar 2012, 16:38

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
Antworten