Python打包EXE,控制台无法隐藏解决方案
发布于 1 个月前
Python打包EXE,控制台无法隐藏解决方案
场景
python脚本打包成exe后,运行时始终有个控制台窗口显示(关键是这是自动化任务脚本,总觉得这是在留下摸鱼证据sos)。
可是使用pyinstaller打包时已经使用了-w参数(表示隐藏控制台)
仔细观察那个控制台,标题为
C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe
且会打印一行内容:DevTools listening on ws://127.0.0.1:52704/devtools/browser/xxxxxxxx
这是chromedriver的目录,那可能不是我程序的问题了,开始尝试解决...
解决方案
- 尝试删除缓存重新打包(不可行)
pyinstall --clean -F -w -i cow.ico AutoTask.py
- 添加chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])(不可行)
这里使用add_experimental_option方法添加了一个实验性选项。
具体来说,这个选项是用来排除某些Chrome内置的命令行标志(switches)。
在这个例子中,'enable-logging'被排除了,意味着Selenium将不会输出Chrome浏览器的大量日志信息到控制台,这在某些情况下可以减少输出的杂乱,使程序输出更易于阅读,尤其是在进行调试或运行自动化脚本时
但是啊,好家伙,直接chrome又开始显示在接受自动化了,而且还是有那个黑控制台
3. 修改service.py原文件(目前唯一找到的可行的解决方案)
- 找到selenium库的service.py文件
路径根据自己的来!.../Lib/sit-packages/selenium/webdriver/common/service.py的源码
- 查找下面的代码
self.creation_flags = self.popen_kw.pop("creation_flags", 0)
- 改成下面的代码
self.creation_flags = self.popen_kw.pop("creation_flags", 134217728)
creationflags改为一个神秘数字134217728(其实就是0x8000000)
Ok,问题解决!