使用 pyinstaller 摆脱 chromedriver 控制台 window

Getting rid of chromedirver console window with pyinstaller

我在无头模式中使用chrome驱动程序。我使用 pyinstaller 将脚本编译为一个 exe 文件。一切正常,除了我得到以下 console window 每当我打开 chrome 页面时:

我单独尝试了选项 --windowed、单独 --noconsole--windowed--noconsole,但我仍然得到 window。

我怎样才能摆脱它?

我找到了以下答案,它对我来说非常有用:

要避免获取 chromedriver 的控制台 windows,请打开文件

Python\Lib\site-packages\selenium\webdriver\common\service.py

并改变

self.process = subprocess.Popen(cmd, env=self.env, close_fds=platform.system() != 'Windows', stdout=self.log_file, stderr=self.log_file, stdin=PIPE)

收件人:

self.process = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE ,stderr=PIPE, shell=False, creationflags=0x08000000)

我遇到了类似的问题,我想分享一下我是如何解决它的。首先我将描述上下文:

-- 我的脚本运行良好,它打开 chrome windows 正常(不是无头)。

-- 我使用了 pyinstaller(带有 onefile 和 noconsole 命令)。

-- EXE 可以运行,但每次它打开 chrome window,它也会打开一个控制台 window,我不记得 [=39= 是什么了] 说,但这不是错误。

-- 我尝试了 Ahmed post 的解决方案,那天它奏效了。

-- 第二天在各台电脑上试了EXE,问题又来了

-- 我推迟了那个问题,因为它不是致命错误,而且我的应用程序中还有更重要的问题需要解决。因此,当我试图解决另一个问题时,我找到了这个答案:.

-- 基本上它说的是改变你在 运行 pyinstaller 时使用的命令的顺序,实际上会影响 EXE 文件的打包方式。 (我不确定为什么)。

-- 我 运行: pyinstaller --add-binary "chromedriver.exe;." --noconsole --onefile myApp.py

这最终使控制台 window 不再显示。

希望这对任何人都有用。