Hi...
Ich suche nach einer Möglichkeit ein Python-Programm dynamisch mit Modulen zu erweitern und frage mich, wie ich das am besten bewerkstelligen kann...
Die Module, die mein Hauptprogramm bei bedarf erweitern, sind alle in einer einzelnen Python-Datei vorhanden. In jeder Modul-Datei stehen Informationen über das Modul drin. Diese brauche ich im Hauptprogramm...
Nun ist die einfachste Möglichkeit, alle Module zu importieren... Dann kann ich an die Modul-Informationen ran...
Nun wird aber bei jedem Start nur ein Modul wirklich benötigt...
Wenn ich nun die Module alle imporieren, obwohl ich bei jedem Start nur eins benötige, nimmt das nicht unnötig Speicherplatz weg?
Oder sollte ich besser ein from Modul import Info machen, um an die Modul-Informationen zu kommen und später, nur das benötigte Modul komplett importieren und "ausführen"???
Speicherplatz beim import...
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi jens,
das bleibt sich gleich, ob du ein from import machst oder ein import, in jedem fall wird das Modul als ganzes importiert.
Mach dir eine Datei mit den Relevanten Daten der Module und importiere dann das ausgewählte Modul mit __import__ z.B.
Gruß
Dookie
das bleibt sich gleich, ob du ein from import machst oder ein import, in jedem fall wird das Modul als ganzes importiert.
Mach dir eine Datei mit den Relevanten Daten der Module und importiere dann das ausgewählte Modul mit __import__ z.B.
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Wie jetzt...
Wenn ich z.B. ein from os import path mache, dann ist das das gleiche als wenn ich import os mache???
Ich bin davon ausgegangen, das bei from nur die anegegebene Klasse importiert wird...
Wie kann man eigentlich einen überblick über den verwendeten Speicher bekommen???
Deine Idee ist aber vielleicht auch nicht so schlecht, aber dann kann man nicht einfach ein Modul dazupacken, indem man es in das richtige Verzeichnis kopiert...
Dafür kann man natürlich in der ModulInfoDatei die entsprechenden Einträge auskommentieren.... Hmmmmm.....
Wenn ich z.B. ein from os import path mache, dann ist das das gleiche als wenn ich import os mache???
Ich bin davon ausgegangen, das bei from nur die anegegebene Klasse importiert wird...
Wie kann man eigentlich einen überblick über den verwendeten Speicher bekommen???
Deine Idee ist aber vielleicht auch nicht so schlecht, aber dann kann man nicht einfach ein Modul dazupacken, indem man es in das richtige Verzeichnis kopiert...
Dafür kann man natürlich in der ModulInfoDatei die entsprechenden Einträge auskommentieren.... Hmmmmm.....
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
bei form wird nur die Klasse/Funktion oder sonstiges in den Namensraum des importierenden Moduls kopiert, aber auch das ganze Modul geladen.
Einen Überblick über den Speicherverbrauch bekommst wohl nur mit einem externen Tool, das die den Speicherverbrauch anzeigt.
Du kannst dir ja auch ein Installscript machen, daß das Modul ins Plugins-Verzeichnis kopiert und einen entsprechenden Eintrag in die ModulInfoDatei macht. Du könntest die Infos auch in der Moduldatei als Kommentar besonders gekennzeichnet eintragen und beim Programmstart die Module in dem Pluginsverzeichnis nach entsprechenden Einträgen parsen ...
Gruß
Dookie
Einen Überblick über den Speicherverbrauch bekommst wohl nur mit einem externen Tool, das die den Speicherverbrauch anzeigt.
Du kannst dir ja auch ein Installscript machen, daß das Modul ins Plugins-Verzeichnis kopiert und einen entsprechenden Eintrag in die ModulInfoDatei macht. Du könntest die Infos auch in der Moduldatei als Kommentar besonders gekennzeichnet eintragen und beim Programmstart die Module in dem Pluginsverzeichnis nach entsprechenden Einträgen parsen ...
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Die Idee ist auch nicht schlecht... Aber vielleicht ist es bisher auch noch nicht notwendig...
Aber so generell, gibt es eigentlich eine möglichkeit ein import eines Moduls, wenn der Name in einer Variablen steckt???
Also:
import <variable>
Natürlich mit eval("import "+<variable>) aber das ist unschön...
Aber so generell, gibt es eigentlich eine möglichkeit ein import eines Moduls, wenn der Name in einer Variablen steckt???
Also:
import <variable>
Natürlich mit eval("import "+<variable>) aber das ist unschön...
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Code: Alles auswählen
modul = __import__(name, globals(), locals(), [])
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das verstehe ich jetzt nicht so ganz...
Ist das:
gleich das:

Ist das:
Code: Alles auswählen
ModulName="EinSuperModul"
__import__(ModulName)
Code: Alles auswählen
import EinSuperModul

-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
jo fasst, musst noch globals und locals angeben und eine (leere) liste.
siehe auch: http://www.python.org/doc/current/lib/b ... funcs.html
Gruß
Dookie
siehe auch: http://www.python.org/doc/current/lib/b ... funcs.html
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
Hi. Das ist doch aber nicht zwingend, da die doch als Standart definiert sind, oder?Dookie hat geschrieben:jo fasst, musst noch globals und locals angeben und eine (leere) liste.
siehe auch: http://www.python.org/doc/current/lib/b ... funcs.html
Gruß
Dookie