用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均用到该语句,均需修改。
重新打包,问题解决。