2014-10-01 12 views
8

pip non è in grado di trovare questo modulo, così come me sul sito web di pypi. Potresti dirmi il segreto, come installarlo?Come installare il subprocess module per python?

Ho bisogno del modulo per generare il nuovo processo shell tramite subprocess.call. Ho visto molti esempi, dove le persone usano import subprocess, ma nessuno mostra come è stato installato.

errore, che ho ottenuto (nel caso in cui ho perso la mia mente e non capisce cosa sta succedendo):

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

è incorporato, non c'è bisogno di installarlo. qual è la tua versione di Python? –

+1

Il modulo 'subprocess' fa parte della libreria standard, non è necessario (non può, in realtà) essere installato. L'errore che si ottiene indica che l'* eseguibile * che dovrebbe essere eseguito come un sottoprocesso non può essere trovato, non il modulo 'subprocess' stesso. Potrebbe esserci un problema con la directory di lavoro, '$ PATH', o l'eseguibile che non è un '.exe'. –

+0

Che tipo di file è 'py.test'? Windows non sa come dovrebbe eseguire un file con un'estensione '.test', quindi è necessario specificare almeno un interprete con cui eseguirlo. Vedi [questa domanda] (http://stackoverflow.com/questions/4965175/make-subprocess-find-git-executable-on-windows/10555130) per un esempio di questo problema con 'git.cmd'. –

risposta

7

Non v'è alcuna necessità di installare questo modulo in Python 2.7. È un modulo standard integrato.

Il documentation mostra che è stato aggiunto alla libreria per Python versione 2.4. È con noi da molto tempo ormai.


L'errore visualizzato nell'aggiornamento della domanda non è niente di più prosaico di un errore di file non trovato. Probabilmente il file eseguibile che si sta tentando di chiamare Popen non può essere trovato.

Tale traceback indica che subprocess è installato ed è stato importato. Il problema è semplicemente che la chiamata a subprocess.call('py.test') non riesce.


Per riferimento futuro, questo è il tipo di traceback si incontrano quando si tenta di importare un modulo che non è stato installato:

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

Ho appena aggiornato la domanda e aggiunto testo di errore .. forse non l'ho capito correttamente? – avasin

+0

Sì, hai perfettamente ragione. Dura giornata ... accetterà risposta in 8 minuti. – avasin

2

L'errore-text è fuorviante. La maggior parte dei comandi di sottoprocesso prevede che lo shellcmd venga inviato come un elenco di stringhe.

In questi casi vi raccomando vivamente l'utilizzo del modulo shlex:

import shlex 

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

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

o in questo caso semplice basta:

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