导入cv2导致Selenium启动Chrome浏览器失败问题求助
解决先导入cv2导致Selenium无法启动Chrome的问题
可行解决方案
方案1:延迟导入cv2
先启动Chrome浏览器实例,再导入cv2,这是最直接的临时解决办法:
from selenium import webdriver # 优先启动Chrome browser = webdriver.Chrome() # 再导入cv2 import cv2 browser.get('https://example.com') input()
方案2:重置sys.path后启动Chrome
如果业务逻辑要求必须先导入cv2,可以通过临时恢复原始sys.path来规避路径干扰:
import sys # 提前保存未被cv2修改的原始sys.path original_sys_path = sys.path.copy() import cv2 # 临时恢复原始路径以启动Chrome sys.path = original_sys_path browser = webdriver.Chrome() # 恢复包含cv2依赖路径的sys.path,确保后续cv2功能正常 sys.path.extend([p for p in sys.path if p not in original_sys_path]) browser.get('https://snake.io') input()
问题根源分析
opencv-python的bootstrap函数会修改sys.path,将其内部扩展路径插入到sys.path的靠前位置(根据applySysPathWorkaround参数决定插入到索引0或1)。这种修改会干扰Selenium启动Chrome时的路径查找逻辑,导致ChromeDriver无法正常与Chrome实例建立DevTools连接,最终抛出SessionNotCreatedException并提示DevToolsActivePort file doesn't exist。
将cv2导入放在Chrome启动之后时,Selenium已经完成了浏览器启动的路径校验,不会受到后续sys.path修改的影响,因此可以正常运行。
内容的提问来源于stack exchange,提问作者Dev Dev
相关产品推荐
相关产品推荐

