2017-04-24 69 views
1

我有一個電子應用xxx.exe它產生一個可執行文件創建從PyInstaller yyy.exe。在yyy.exe中,我終於嘗試通過subprocess.check_output()啓動git cmd。 不幸的是,致電check_output()拋出[WinError 6] The handle is invalidWinError 6:該句柄是無效的python check_output產卵在電子應用

如果在命令行上直接啓動了yyy.exe,則一切正常。 這個問題只發生在Windows上。我的假設是,在stdin上有一些檢查會觸發異常,因爲通過Electron應用運行時不提供任何Stdin。

任何提示將不勝感激!提前致謝!

+0

感謝這麼多的選擇,我沒有再沿着這條道路後,試圖讓'標準輸入= subprocess.DEVNULL'其失敗... –

+0

@eryksun請把你的答案,所以你可以得到獎勵! :) –

回答

1

在Windows上,subprocess.Popen嘗試複製非零標準句柄,如果它們無效則失敗。您可以將stdinstderr重定向到NUL。例如:

import os 

try: 
    from subprocess import DEVNULL 
except ImportError: 
    DEVNULL = os.open(os.devnull, os.O_RDWR) 

output = subprocess.check_output(cmd, stdin=DEVNULL, stderr=DEVNULL) 
相關問題