Code einss Programms ergänzen

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
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Hallo,

ich würde gerne ein Pythonprogramm schreiben, dass über eine Eingabe eine Codeergänzung des Programmes im Programm erzeugt und dann ausführt. Geht das?
BlackJack

@Brando: Das kommt darauf an was Du damit genau meinst. Schau Dir mal die `compile()`-Funktion und die ``exec``-Anweisung an.
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Ich würde gern ein Pythonprogramm schreiben, welches ein return bspw. eine Matrix hat. Dann soll in einem anderen Pythonprogramm dieses Programm genutzt werden, wobei als Übergabeparameter das erste Pythonprogramm gegeben wird, dieses dann mit einem import im zweiten verzeichnet werden, und ausgeführt werden. Das zweite Pythonprogramm stellt dann die Matrix dar. Kann ich import Anweisungen festlegen, indem ich Übergabeparameter nutze, oder muss ich anders vorgehen?
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Brando: was Du suchst, sind Funktionen. Du kannst ein einem Modul (der richtige Name für importiertes Programm) Funktionen definieren, die Du aus einem anderen Modul heraus aufrufen kannst, indem Du ersteres importierst.
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Das Problem ist, dass der Modulname wechseln kann. D.h. der import müsste wechselnde Namen haben, je nach Übergabeparameter in dem Darstellungsprogramm. Kann ich den import mit einem Variablennamen leisten, der im Darstellungsprogramm übergeben wird?
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Schau Dir importlib an.
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Hallo, also ich habe folgendes gemacht: Ein Programm mit dem Namen matrix_mult_module.py mit folgendem Code:

Code: Alles auswählen

from sympy.matrices import *



def rechne(A,B):
   z=A*B
   return z
Dann habe ich ein Programm in dem ich der Variable i_modul die Zeichenkette "matrix_mult_module.py" zuordne, und auch einen Import durchgeführt:

Code: Alles auswählen

i_progr=import_module(i_modul)
          z=i_progr.rechne(x[0],x[1])
          w=widgets.Textarea(
               description='Matrix', 
               value = str(z),
            )
          display(w)
x[0] und x[1] sind zwei mal zwei Matrizen. Allerdings funktioniert der Code nicht. Es kommt folgende Fehlermeldung:

ImportError: No module named 'matrix_mult_module'

Ich arbeite mit Jupyter Notebook, und habe mein Programmmodule matrix_mult_module.py unter dem gleichen Ordner gespeichert, wie das Programm, welches das Modul nutzen soll. Was habe ich falsch gemacht? Ist der Speicherort der richtige? Ist die py Endung richtig? Habe ich im ausführenden Programm die richtigen Aufrufe und Methodenzuweisungen gemacht?
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Brando: der Modulename ist ohne Endung. Ob das Modul gefunden wird, oder nicht, hängt davon ab, ob bei Jupyter das aktuelle Verzeichnis im Suchpfad ist oder nicht.
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Der Suchpfad muss eingetragen sein, da ja auch alle anderen Programme, die ich dort laufen lasse in diesem Pfad sind. Aber ist denn mein Programmansatz korrekt, insbesondere der Aufruf des Moduls? Den Error kann ich mir nicht erklären, soll ich vielleicht den Namen der Datei ohne py Endung übergeben. Zudem übergebe ich den Namen als String, muss ich vielleicht, wenn ich das Modul aktiviere etwas beachten, was das betrifft?
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Bando: die Meldung ist doch eindeutig: ImportError: No module named 'matrix_mult_module'
Das Modul matrix_mult_module ist nicht im Suchpfad.
Antworten