2017-12-16 11 views
0

を呼び出します。Pythonの:すべてのサブプロセスの "FileNotFoundError" は、Windows 7、Pythonの3.5.1を使用して

import subprocess 
subprocess.check_output(['echo', 'hello']) 

でエラーが発生します:

Traceback (most recent call last): 
File "<pyshell#8>", line 1, in <module> 
    subprocess.check_output(['echo', 'hello']) 
File "D:\Programs\Python 3.5.1\lib\subprocess.py", line 629, in check_output 
    **kwargs).stdout 
File "D:\Programs\Python 3.5.1\lib\subprocess.py", line 696, in run 
    with Popen(*popenargs, **kwargs) as process: 
File "D:\Programs\Python 3.5.1\lib\subprocess.py", line 950, in __init__ 
    restore_signals, start_new_session) 
File "D:\Programs\Python 3.5.1\lib\subprocess.py", line 1220, in _execute_child 
    startupinfo) 

FileNotFoundError: [WinError 2] The system cannot find the file specified 

このエラーは、サブプロセスなど、すべてのサブプロセスの呼び出し、で発生します.run、subprocess.call、およびsubproccess.Popen。同じエラーが使用されているものの指令に関係なく起こります:

subprocess.check_output(['['D:\path\to\exe\program.exe', 'argument']) 
FileNotFoundError: [WinError 2] The system cannot find the file specified 

限りコマンドが存在しないパスを実行しようとしたとき、私は、このエラーは通常発生し伝えることができますが、それはに起こるであろう、なぜ私は判断できないとしてこれらの場合。

+0

バイナリの 'echo'が見つかりません。パス解決メカニズムが必要な場合は、 'shell = True'を設定する必要があります。 –

+0

@WillemVanOnsemそれは問題を解決するようです。ありがとうございました –

答えて

0

実行ファイルへのフルパスを含める必要があります。例えば、

import subprocess 
subprocess.check_output(['/bin/echo', 'hello']) 

(それはWindows上で正確に場所がわからない、しかし。)

注:shell=Trueを使用しても、動作するように起こるのでしょうが、私はそれを解決することはお勧めしませんそのように(理由1)PATHの解像度は効果的に副作用になります(実行時にPATHの値に隠れた依存関係があります)。(2)security concernsがあります。

関連する問題