Seite 1 von 1
import aus loop?
Verfasst: Dienstag 29. Juni 2021, 08:08
von LeaRn
Geehrter Leser.
Ich bekomme eine Fehlermeldung (# import package
from short; SyntaxError: invalid syntax), wenn ich Pakete mit einem Loop einlesen will:
Code: Alles auswählen
pkgs = {
"package": ["pandas", "numpy"],
"short": ["pd", "np"]
}
for i in range(1, len(pkgs)):
package = pkgs.get("package")
short = pkgs.get("short")
import package[i] from short[i]
Ich habe es schon mit eval() und exec() probiert, was aber nicht zur Lösung des Problems führte. Falls sich jemand meinem Problem annimmt: Ich wäre sehr froh um eine Erklärung, wieso mein Code nicht funktionieren kann. (Die Ineffizienz des Loop bin ich mir bewusst.)
Vielen Dank schon im Voraus.
LeaRn
PS: Dass dieser Loop im Allgemeinen keine gute Idee ist, bin ich mir bewusst.
Re: import aus loop?
Verfasst: Dienstag 29. Juni 2021, 09:19
von __deets__
Da ist vieles im Argen. Falsches iterieren, falsches zugreifen mit 1-basiertet Logik, und das Wichtigste zum schluss: es ist doch sinnlos, das zu machen. Schreib Deine Import statements einfach an den Beginn des Skriptes. Denn selbst wenn das was du da treibst zum funktionieren gebracht wird (das geht mit einem Modul aus der Standard Bibliothek), ist es doch komplett sinnfrei. Denn du schaffst dadurch nicht die Namen, die du brauchst, um damit darauf zuzugreifen.
Was ist denn der Grund, warum du so vorgehen willst?
Re: import aus loop?
Verfasst: Dienstag 29. Juni 2021, 09:30
von Sirius3
Es muß `as` heißen und so aussehen:
Die Datenstruktur muß so aussehen
Code: Alles auswählen
packages= [
{"package": "pandas", "short": "pd"},
{"package": "numpy", "short": "np"},
]
for package in packages:
print(f"hier soll was magisches passieren: import {package['package']} as {package['short]'}")
Solange Du keine vernünftige Erklärung lieferst, warum Du eine Schleife brauchst, wird Dir hier aber niemand schreiben, was das magische sein könnte.
Re: import aus loop?
Verfasst: Dienstag 29. Juni 2021, 10:36
von LeaRn
Danke für Eure Antworten. Wie schon gesagt, der Code ist sinnfrei und ich will ihn gar nicht erst zum laufen bringen, sondern suche nur eine Erklärung, wieso die Import-Funktion nicht in der Schleife funktioniert (Ich habe schon das help() der Funktion angeschaut, habe da aber keinen Grund gefunden). Das mit dem "as" und dem Beginn mit 0 sehe ich natürlich ein.
Re: import aus loop?
Verfasst: Dienstag 29. Juni 2021, 10:50
von Sirius3
`import` ist keine Funktion, sondern ein Statement. Daher kann man da auch nicht mit Variablen arbeiten.
Re: import aus loop?
Verfasst: Dienstag 29. Juni 2021, 14:55
von DasIch
Sirius3 hat geschrieben: Dienstag 29. Juni 2021, 10:50
`import` ist keine Funktion, sondern ein Statement. Daher kann man da auch nicht mit Variablen arbeiten.
Gut das `if` eine Funktion ist, man stelle sich vor es wäre ein Statement und man könnte keine Variablen darin nutzen
Das `import "foo"` oder `import foo as "bar"` nicht geht ist einfach konsequent, schliesslich haben Zuweisungen sonst immer Variablen/Namen als Ziel wie z.b. bei `foo = "bar"`, `for element in elements`, `except Exc as error` usw. Das liesse `import "foo" as bar` allerdings zu, wäre aber irgendwie komisch dies zu erlauben und die anderen Varianten nicht.