軟硬件環(huán)境
Windows 10
Python 3.5.2
PyQt5
pyinstaller
前沿
使用pyinstaller打包exe,最近在打包包含subprocess.Popen時(shí)發(fā)現(xiàn),加上參數(shù)—noconsole時(shí)產(chǎn)生的exe文件在運(yùn)行的時(shí)候糊饱,進(jìn)程并沒(méi)有運(yùn)行懦底。經(jīng)過(guò)一番google,問(wèn)題得以解決枢冤,現(xiàn)將解決方法記錄一下,形成此文。
subprocess使用
我這里需要利用subprocess.Popen創(chuàng)建一個(gè)進(jìn)程去執(zhí)行一個(gè)命令行操作抛丽,
mProcess = subprocess.Popen(cmd,stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
pyinstaller打包操作命令如下
pyinstaller -F -w xxx.py
打包后生成的exe,可以運(yùn)行饰豺,不過(guò)查看進(jìn)程并沒(méi)有如預(yù)期正確地工作亿鲜。
解決方法
在創(chuàng)建進(jìn)程時(shí),加上startupinfo參數(shù)冤吨,如下
si = subprocess.STARTUPINFO()
si.dwFlags|= subprocess.STARTF_USESHOWWINDOW
mProcess=subprocess.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,startupinfo=si)
問(wèn)題完美解決蒿柳,具體可以參考下 http://blog.csdn.net/djstavav/article/details/61629851