Seite 1 von 1
ImportError: No module named subprocess
Verfasst: Mittwoch 3. Dezember 2008, 15:46
von poison
Hallo zusammen,
ich entwickle momentan unter Python 2.5 und importiere unter anderem das Pythonmodul "subprocess" (ganz normal mittels import subprocess).
Leider erhalte ich folgende Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "<Dateiname>.py", line 3, in ?
import subprocess
ImportError: No module named subprocess
Wenn ich in der Entwicklungsumgebung aber auf das Wort "subprocess" klicke, wird subprocess.py sofort geöffnet, es existiert also und wird auch gefunden... nur beim Programmstart dann irgendwie nicht...
Weiß jemand Rat? Braucht ihr mehr Infos?
Viele Grüße!
Verfasst: Mittwoch 3. Dezember 2008, 16:30
von poison
Ergänzung:
In der Entwicklungsumgebung wird Python 2.5 angezeigt.
Wenn ich in die Konsole "python" eintippe, wird mir auch Python 2.5 angezeigt.
Wenn ich allerdings in meinem Script mal sys.path ausgebe, werden mir alle möglichen Python 2.3 Pfade angezeigt
Hmm, wo kommt denn das her? In den Umgebungsvariablen hab ich soweit ich das sehe Python 2.5 eingestellt...
Verfasst: Mittwoch 3. Dezember 2008, 17:07
von cofi
Da subprocess erst in 2.4 dazukam wird da wohl dein Problem liegen. Schau mal nach der PYTHONPATH Umgebungsvariablen.
So allgemein würde ich sagen, da lief wohl was entscheidend schief

Verfasst: Mittwoch 3. Dezember 2008, 17:24
von poison
cofi hat geschrieben:Schau mal nach der PYTHONPATH Umgebungsvariablen.
PYTHONPATH? Wird die bei der Installation automatisch angelegt? Falls ja: bei mir nicht.
Ich hab eine PYTHONROOT-Umgebungsvariable, die ich aber selbst angelegt habe. Sie verweist auf Python 2.5.
Sie steht im Value der PATH-Umgebungsvariable als %PYTHONROOT%.
Verfasst: Mittwoch 3. Dezember 2008, 17:32
von derdon
Du darfst die Datei nicht subprocess.py nennen. Oder ums allgemein zu sagen: Eine eigene Datei von dir darf nicht so heißen wie ein Modul aus der stdlib.
Verfasst: Mittwoch 3. Dezember 2008, 17:35
von poison
Ich habe keine eigene Datei so genannt... ich versuche das Modul aus der stdlib aufzurufen, da ich subprocess.Popen aufrufen möchte.
Verfasst: Mittwoch 3. Dezember 2008, 17:44
von cofi
Das kommt auf das OS an, ob das erstellt wird, unter Linux ist das z.B. selten der Fall. Unter Windows ... hmm ka
Versuch mal die Variable zu erstellen und trag dort die 2.3-Pfade ein ... allerdings so, dass sie auf die richtige Version verweisen
Ist allerdings eine gute Frage, wie das denn passieren konnte. Ich hoffe da meldet sich noch ein Windows-User

Verfasst: Mittwoch 3. Dezember 2008, 18:09
von poison
cofi hat geschrieben:Versuch mal die Variable zu erstellen und trag dort die 2.3-Pfade ein ... allerdings so, dass sie auf die richtige Version verweisen

Ich denke mal, du meinst die 2.5-Pfade...
Was hat die Variable auf euren Systemen denn für einen Value?
Einfach z.B. "D:\Python25" (wo auch die python.exe liegt), oder einzeln nochmal lib, site-packages usw. aufgelistet?
Verfasst: Mittwoch 3. Dezember 2008, 19:24
von lunar
cofi hat geschrieben:Da subprocess erst in 2.4 dazukam wird da wohl dein Problem liegen. Schau mal nach der PYTHONPATH Umgebungsvariablen.
Diese Variable hat damit gar nichts zu tun, sie dient nur dazu, sys.path über Umgebungsvariablen zu
erweitern.
derdon hat geschrieben:Du darfst die Datei nicht subprocess.py nennen. Oder ums allgemein zu sagen: Eine eigene Datei von dir darf nicht so heißen wie ein Modul aus der stdlib.
Das würde sich in einem anderen Fehler äußern, da ein solches Modul sehr wohl importiert werden würde. Der wahrscheinlichste Effekt wäre also ein AttributeError.
Ins Blaue geraten würde ich mal annehmen, dass sowohl Python 2.3 als auch Python 2.5 installiert sind. Die IDE nutzt 2.5, und 2.5 ist auch in $PATH eingetragen. Die Dateiverknüpfung für *.py-Dateien steht aber vielleicht noch auf Python 2.3.
Wie führst du dein Skript den aus?
Verfasst: Donnerstag 4. Dezember 2008, 11:11
von poison
lunar hat geschrieben:Ins Blaue geraten würde ich mal annehmen, dass sowohl Python 2.3 als auch Python 2.5 installiert sind.
Genau, auf meinem Rechner sind Python 2.3, 2.4 und 2.5 installiert.
Diese Situation wird es aber wahrscheinlich auch auf den Rechnern geben, auf denen das Script mal laufen wird, ich kann da nicht einfach entscheiden "schmeißt euer Python 2.3 runter"...
lunar hat geschrieben:Wie führst du dein Skript den aus?
Normalerweise einfach per Doppelklick auf das .py-File, ich habe eine wxPython GUI draufgesetzt.
lunar hat geschrieben:Die IDE nutzt 2.5, und 2.5 ist auch in $PATH eingetragen. Die Dateiverknüpfung für *.py-Dateien steht aber vielleicht noch auf Python 2.3.?
Du hast recht! In der Registry stand wirklich alles auf Version 2.5, nur HKEY_CLASSES_ROOT\Python.File\AutoRegister hat noch die PythonCOM2
3.dll angezogen.
Habs auf ...25.dll geändert und nun gibt auch sys.path nur noch Python 2.5er Pfade aus. Und das Script läuft - ich bin begeistert!

Vielen Dank! *hüpf*