我正在制作一个PyQt4应用程序,我需要使用selenium。开发时一切正常,但当我导出到单个文件 EXE时,通过 pyinstaller 和没有控制台,它会产生以下回溯错误:
[WinError6] The handle is invalid
当我在console = True
(在pyinstaller规范文件中)导出时,不会发生这种情况,错误仅在没有控制台的情况下生成。
产生的错误如下:
driver = webdriver.Chrome(executable_path="chromedriver.exe")
我的规格:
Python: 3.4
架构: 64位
硒: 3.6.0
Pyinstaller: 3.3
操作系统: Windows 10
我用Google搜索了大约1小时但找不到任何解决方案:(
答案 0 :(得分:3)
经过大量研究,我找到了解决上述问题的方法。
您只需要编辑文件:
C:\Python34\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)
为:
self.process = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False, creationflags=0x08000000)
即使在开发时以及部署到EXE之后,这也会起作用。
可能是硒虫。
答案 1 :(得分:0)
我发现pyinstaller不在dist文件夹中创建chromedriver.exe的副本。 将chromedriver.exe文件复制到那里可以为我解决问题。