aber wie übergebe ich dem __import__ ein 'as'?
ich will ja später nur noch eine variable nutzen, damit man diesen code mit allen sqlite-wrappern nutzen kann, die die standardfunktionen haben.
string to command
- gerold
- Python-Forum Veteran
- Beiträge: 5554
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Telfs (Tirol)
- Kontaktdaten:
murph hat geschrieben:aber wie übergebe ich dem __import__ ein 'as'?
Hi murph!
Code: Alles auswählen
ver = __import__("sys").version
print ver
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5554
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Telfs (Tirol)
- Kontaktdaten:
Code: Alles auswählen
sqlite_module = __import__("sqlite")
conn = sqlite_module.connect(":memory:")
...
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
das will er nicht!
gleiche fehlermeldung!
der code (nicht, dass ich was übersehen habe trotz gründlichen suchens)
also meiner ansicht nach sollte das klappen, die variablen sind problemlos vergeben. ich verstehe nicht,warum, wenn gerolds ansatz doch klappen sollte, das nicht funktioniert!
gleiche fehlermeldung!
Traceback (most recent call last):
File "./sqlite-manager.py", line 103, in ?
starter()
File "./sqlite-manager.py", line 85, in starter
executer.greeting()
File "./sqlite-manager.py", line 91, in greeting
self.conn = sqlite_module.connect(self.conn_var)
NameError: global name 'sqlite_module' is not defined
der code (nicht, dass ich was übersehen habe trotz gründlichen suchens)
Code: Alles auswählen
def Importer():
getter = UserSettings()
module = getter.get_module()
sqlite_module = __import__(module)
class main:
def greeting(self):
Importer()
self.conn_var = raw_input("Please enter the Path to the SQLite-Database: \n")
self.conn = sqlite_module.connect(self.conn_var)
self.cur = self.conn.cursor
also meiner ansicht nach sollte das klappen, die variablen sind problemlos vergeben. ich verstehe nicht,warum, wenn gerolds ansatz doch klappen sollte, das nicht funktioniert!
- gerold
- Python-Forum Veteran
- Beiträge: 5554
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Telfs (Tirol)
- Kontaktdaten:
murph hat geschrieben:NameError: global name 'sqlite_module' is not defined
Hi murph!
Zwei Sachen:
1. Verwende keine Bindestriche in Modulnamen, da ein Bindestrich für Python ein "Minus" darstellt.
2. Variablen, die du in einer Funktion erstellst -- egal wie -- sind in deren Gültigkeit auf den lokalen Namensraum dieser Funktion beschränkt. Entweder du setzt vor der Verwendung die Variable mit "global" in den globalen Namensraum oder du importierst nicht in einer Funktion.
mfg
Gerold

PS: Klassennamen sollten mit einem Großbuchstaben beginnen und Funktions-/Methodennamen sollten mit einem Kleinbuchstaben beginnen.
Code: Alles auswählen
class HalloWelt:
def say_yes(self):
print "Yes!"
h = HalloWelt() # Sofort als Instanzierung einer Klasse erkennbar
h.say_yes()
Dadurch lassen sich Fehler vermeiden, da man sofort weiß, ob man gerade eben eine Klasse instanziert oder eine Funktion ausführt.
Meines Erachtens, wäre "import_modules()" ein guter Name für die Funktion "Importer()", da er ausdrückt was getan wird. "Importer()" sieht aus wie eine Klasse und hat auch den Namen eines Objektes. Dass keine Klasseninstanz zurück gegeben wird -- verwirrt.

Zuletzt geändert von gerold am Freitag 9. Juni 2006, 22:57, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Bitte versuch doch mal dich ein bisschen an Namenskonventionen zu halten. Funktionsnamen bitte klein und Klassennamen mit einem Grossbuchstaben beginnen.
`getter`, `module` und `sqlite_module` sind Namen die nur innerhalb der Funktion definiert sind. Ausserhalb sind die natürlich nicht bekannt. Daher die Ausnahme.
murph hat geschrieben:Code: Alles auswählen
def Importer():
getter = UserSettings()
module = getter.get_module()
sqlite_module = __import__(module)
`getter`, `module` und `sqlite_module` sind Namen die nur innerhalb der Funktion definiert sind. Ausserhalb sind die natürlich nicht bekannt. Daher die Ausnahme.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder