Probleme mit einem alten Python Skript

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
Gingi
User
Beiträge: 1
Registriert: Dienstag 14. Oktober 2008, 11:33

Hallo Leute!

Ich bin ganz neu in der Python-Umgebung und somit noch blutiger Anfänger. Hab zwar relativ viel Programmiererfahrung (c/c++/c#, java etc), aber ich bin hier echt am verzweifeln.

Habe vor mir ein python Programm (Converter), welches über die Kommandozeile ein Programm aufruft. Verstehen kann ich den kompletten Code ohne Probleme. Jetzt gibt es noch eine 2. Datei (ConvTools) mit mehreren Klassen drinnen.

Dort habe ich eine zusätzliche Klasse hinzugefügt, um diese in Converter verwenden zu können.

Im Converter habe ich "from convtools import *" um eben diese Klassen dem Package hinzuzufügen (zumindest hätte ich das so verstanden.

Jedoch bekomme ich jetzt immer einen Fehler, wenn ich auf meine neue Klasse zugreifen möchte.

Der Fehler lautet: Name Error: global name xxx is not defined.

Ich komme einfach nicht weiter.

mfg

Gingi

PS: hätte die Suche schon probiert nur weiß ich nicht so recht nach was ich suchen sollte :)
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Und hier wohl keiner auf was er antworten soll, so ganz ohne Code...
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Wie snafu schon schrieb: Ohne Code können wir dir da auch nicht weiterhelfen. Außerdem macht man keine *-Importe mehr.
BlackJack

@Gingi: Die Beschreibug ist in sich schon nicht stimmig. Wenn die Datei `ConvTools.py` heisst, dann stimmt der Import von `convtools` nicht.

Ansonsten heisst das wahrscheinlich, dass es im Modul `convtools` keine Klasse mit dem Namen `xxx` gibt, denn falls dort eine solche gäbe, hätte der Import diesen Namen in den Namensraum des importierenden Moduls geholt.

Falls Du den betreffenden Quelltext nicht zeigen möchtest oder darfst, versuche das Problem doch einfach mal mit einem Beispiel nach zu stellen.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

querdenker hat geschrieben:Außerdem macht man keine *-Importe mehr.
Was ist das denn für ein Satz?! :roll:
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

numerix hat geschrieben:
querdenker hat geschrieben:Außerdem macht man keine *-Importe mehr.
Was ist das denn für ein Satz?! :roll:
Ein wahrer? Worauf willst du hinaus?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

numerix hat geschrieben:
querdenker hat geschrieben:Außerdem macht man keine *-Importe mehr.
Was ist das denn für ein Satz?! :roll:
Also in meinem Gehirn wird der geparst und die Semantik führt nicht zu Exceptions.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

keppla hat geschrieben:
numerix hat geschrieben:
querdenker hat geschrieben:Außerdem macht man keine *-Importe mehr.
Was ist das denn für ein Satz?! :roll:
Ein wahrer? Worauf willst du hinaus?
Nein, kein wahrer.

Die Aussage ist falsch, wenn sie - so wie hier - ("man", "keine ... mehr") als pauschale Aussage ohne Berücksichtigung des konkreten Codes quasi als Axiom hingestellt wird. (Was leider alle Nase lang im Forum passiert).

Ja, es gibt gute Gründe, in vielen (vermutlich den meisten) Fällen, auf Sternchenimporte zu verzichten. Das kann man in zahlreichen Threads auch nachlesen. Aber der Satz "man macht es nicht mehr" ist einfach kein guter Satz. Wer genau weiß, was er importiert, und sich bewusst ist, welche Auswirkungen das hat, der kann guten Gewissens auch mit Sternchen importieren.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

numerix hat geschrieben:Wer genau weiß, was er importiert, und sich bewusst ist, welche Auswirkungen das hat, der kann guten Gewissens auch mit Sternchen importieren.
Also wenn man weiß dass man es falsch macht, dann darf man es ruhig falsch machen?

Also ganz ehrlich, sinnvolle Gründe für *-Imports kann man an einer Hand abzählen, selbst nachdem ein Großteil der Finger amutiert wurde. Also ganz selten. Daher ist es durchaus vertretbar, Leuten mit weniger Ahnung zu sagen, dass es keine gute Idee ist. Das ist etwas parallel zu l2tabu - einige Dinge sollte man vermeiden und natürlich haben sie ihren Grund aber den immer dazuzuschreiben ist für Anfänger eben selten besonders informativ noch zielführend. Wenn es ihn interessiert, steht es ihm ja frei nachzufragen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Leonidas hat geschrieben:
numerix hat geschrieben:Wer genau weiß, was er importiert, und sich bewusst ist, welche Auswirkungen das hat, der kann guten Gewissens auch mit Sternchen importieren.
Also wenn man weiß dass man es falsch macht, dann darf man es ruhig falsch machen?
Also, ich denke, du weißt, was ich meine.

Ich will mich jetzt auch nicht (erneut) dazu auslassen; das habe ich in einem anderen Thread schonmal getan (im Zusammenhang mit dem "bösen" input() ...). Hat mich halt aufgeregt der Satz von querdenker ... :x
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

os.system, os.system! :)
BlackJack

@snafu: Nee das ist doof. os.popen und os.popen2-4 rockt! :-)
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

BlackJack hat geschrieben:@snafu: Nee das ist doof. os.popen und os.popen2-4 rockt! :-)
subprocess!
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

name hat geschrieben:
BlackJack hat geschrieben:@snafu: Nee das ist doof. os.popen und os.popen2-4 rockt! :-)
subprocess!
[ ] Du hast den Witz verstanden

;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Das mit dem poppen ist immer so Problematisch. Da muss man aufpassen das es keinen Fork gibt!
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
BlackJack

Jaja, und wenn man die Kinder dann nicht ordentlich behandelt, werden sie zu Zombies und müssen gekillt werden. ;-)
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

numerix hat geschrieben:
keppla hat geschrieben:
numerix hat geschrieben:
querdenker hat geschrieben:Außerdem macht man keine *-Importe mehr.
Was ist das denn für ein Satz?! :roll:
Ein wahrer? Worauf willst du hinaus?
Nein, kein wahrer.

Die Aussage ist falsch, wenn sie - so wie hier - ("man", "keine ... mehr") als pauschale Aussage ohne Berücksichtigung des konkreten Codes quasi als Axiom hingestellt wird. (Was leider alle Nase lang im Forum passiert).
[/code]
Ack.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten