軟硬件環境
Windows 10
Python 3.5.2
PyQt5
pyinstaller
前沿
使用pyinstaller打包exe,最近在打包包含subprocess.Popen時發現,加上參數—noconsole時產生的exe文件在運行的時候,進程并沒有運行。經過一番google,問題得以解決,現將解決方法記錄一下,形成此文。
subprocess使用
我這里需要利用subprocess.Popen創建一個進程去執行一個命令行操作,
mProcess = subprocess.Popen(cmd,stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
pyinstaller打包操作命令如下
pyinstaller -F -w xxx.py
打包后生成的exe,可以運行,不過查看進程并沒有如預期正確地工作。
解決方法
在創建進程時,加上startupinfo參數,如下
si = subprocess.STARTUPINFO()
si.dwFlags|= subprocess.STARTF_USESHOWWINDOW
mProcess=subprocess.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,startupinfo=si)
問題完美解決,具體可以參考下 http://blog.csdn.net/djstavav/article/details/61629851