ImportError: No module named subprocess

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
poison
User
Beiträge: 6
Registriert: Dienstag 12. Februar 2008, 15:52

Mittwoch 3. Dezember 2008, 15:46

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!
poison
User
Beiträge: 6
Registriert: Dienstag 12. Februar 2008, 15:52

Mittwoch 3. Dezember 2008, 16:30

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 :shock:

Hmm, wo kommt denn das her? In den Umgebungsvariablen hab ich soweit ich das sehe Python 2.5 eingestellt...
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Mittwoch 3. Dezember 2008, 17:07

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 ;)
poison
User
Beiträge: 6
Registriert: Dienstag 12. Februar 2008, 15:52

Mittwoch 3. Dezember 2008, 17:24

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%.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Mittwoch 3. Dezember 2008, 17:32

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.
poison
User
Beiträge: 6
Registriert: Dienstag 12. Februar 2008, 15:52

Mittwoch 3. Dezember 2008, 17:35

Ich habe keine eigene Datei so genannt... ich versuche das Modul aus der stdlib aufzurufen, da ich subprocess.Popen aufrufen möchte.
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Mittwoch 3. Dezember 2008, 17:44

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 ;)
poison
User
Beiträge: 6
Registriert: Dienstag 12. Februar 2008, 15:52

Mittwoch 3. Dezember 2008, 18:09

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?
lunar

Mittwoch 3. Dezember 2008, 19:24

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?
poison
User
Beiträge: 6
Registriert: Dienstag 12. Februar 2008, 15:52

Donnerstag 4. Dezember 2008, 11:11

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 PythonCOM23.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! :D
Vielen Dank! *hüpf*
Antworten