用pyinstaller打包已經設置了"-w"參數,即沒有命令窗口模式,但是運行程序在打開圖片時仍然彈出DOS窗口。
原因是imageio庫的ffmpeg.py文件中引用了subprocess庫,
self._proc = sp.Popen(cmd, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE),
函數Popen輸入參數creationflags默認爲0,,但0不代表“無窗口模式”,通過查找API:
“https://msdn.microsoft.com/en-us/library/windows/desktop/ms684863(v=vs.85).aspx”,
找到無窗口模式爲“CREATE_NO_WINDOW(0x08000000)”,通過修改源代碼實現不彈出窗口,修改代碼前最好備份一下,
self._proc = sp.Popen(cmd, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE, creationflags = int('0x08000000', 16))
注意ffmpeg.py中的函數_initialize和_reinitialize均用到該語句,均需修改。
重新打包,問題解決。