2014-10-01 5 views
8

Pip ist nicht in der Lage, dieses Modul zu finden, sowie mich auf Pypi-Website. Können Sie mir bitte das Geheimnis sagen, wie man es installiert?Wie installiert man Subprozess-Modul für Python?

Ich brauche das Modul, um neue Shell-Prozess über subprocess.call spawn. Ich habe eine Menge Beispiele gesehen, wo Leute import subprocess benutzen, aber niemand zeigt, wie es installiert wurde.

Fehler, dass ich bekam (für den Fall, ich habe meinen Verstand verloren und versteht nicht, was los ist):

Microsoft Windows [Version 6.3.9600] 
(c) 2013 Microsoft Corporation. All rights reserved. 

C:\Users\Alexander\Desktop\tests-runner>python run.py 
Traceback (most recent call last): 
    File "run.py", line 165, in <module> 
    main() 
    File "run.py", line 27, in main 
    subprocess.call('py.test') 
    File "C:\Python27\lib\subprocess.py", line 522, in call 
    return Popen(*popenargs, **kwargs).wait() 
    File "C:\Python27\lib\subprocess.py", line 710, in __init__ 
    errread, errwrite) 
    File "C:\Python27\lib\subprocess.py", line 958, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] The system cannot find the file specified 
+3

es builtin ist, müssen Sie nicht, es zu installieren. Was ist deine Python-Version? –

+1

Das Modul 'subprocess' ist Teil der Standardbibliothek und muss nicht installiert werden (kann nicht installiert werden). Der Fehler, den Sie erhalten, zeigt an, dass die * ausführbare Datei *, die als Unterprozess ausgeführt werden soll, nicht gefunden wird, nicht das Modul 'Unterprozess' selbst. Es könnte ein Problem mit dem Arbeitsverzeichnis "$ PATH" oder der ausführbaren Datei, die keine '.exe 'ist, auftreten. –

+0

Welcher Dateityp ist 'py.test'? Windows weiß nicht, wie es eine Datei mit der Erweiterung ".test" ausführen soll. Sie müssen also mindestens einen Interpreter angeben, mit dem es ausgeführt werden soll. Ein Beispiel für dieses Problem mit 'git.cmd' finden Sie unter [diese Frage] (http://stackoverflow.com/questions/4965175/make-subprocess-find-git-executable-on-windows/10555130). –

Antwort

7

Es gibt keine Notwendigkeit, dieses Modul in Python 2.7 zu installieren. Es ist ein Standardmodul, das eingebaut ist.

Die documentation zeigt, dass es der Bibliothek für Python Version 2.4 hinzugefügt wurde. Es ist schon lange bei uns.

Der Fehler, den Sie in Ihrem Fragenupdate anzeigen, ist nicht nüchterner als ein Fehler in der Datei nicht gefunden. Wahrscheinlich wird die ausführbare Datei, die Sie versuchen, Popen an aufzurufen, nicht gefunden.

Diese Rückverfolgung zeigt an, dass subprocess installiert ist und importiert wurde. Das Problem ist einfach, dass der Aufruf an subprocess.call('py.test') fehlschlägt.


Für die Zukunft ist dies die Art von Traceback auftreten, wenn ein Modul zu importieren versuchen, die nicht installiert wurde:

 
>>> import foo 
Traceback (most recent call last): 
    File "", line 1, in 
ImportError: No module named foo 
+0

Ich habe gerade die Frage aktualisiert und Fehlertext hinzugefügt ... vielleicht habe ich es nicht richtig verstanden? – avasin

+0

Ja, Sie haben völlig Recht. Harter Tag ... Akzeptiert die Antwort in 8 Minuten. – avasin

2

Der Fehlertext ist irreführend. Die meisten subprocess-Befehle erwarten, dass die Shellcmd als Liste von Strings übergeben wird.

In diesen Fällen i stark die Verwendung des shlex Modul empfehlen:

import shlex 

shell_cmd = "py.test" # or should it be "test.py" ? 

subprocess_cmd = shlex.split(shell_cmd) 
subprocess.call(subprocess_cmd) 

oder in diesem einfachen Fall nur:

subprocess.call(["py.test"]) 
Verwandte Themen