在python的开发环境中正常运行,打包成.exe之后,报错SSL握手失败,代码大概是使用浏览器点击固定网页上的内容,代码可以正常运行,使用pyinstaller --onefile --hidden-import=selenium --add-data "msedgedriver.exe;." -i XXX.py命令打包的,报错情况如下
根据你提供的报错信息,SSL握手失败的问题可能与打包的可执行文件无法正确加载所需的SSL证书或库有关。
下面是一些可能的解决方案:
指定SSL证书路径:在创建浏览器实例时,尝试指定 SSL 证书的路径。例如,如果你使用的是Selenium Webdriver和Chrome浏览器,可以通过以下方式设置证书路径:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--ssl-client-certificate=path/to/your/certificate.pem")
driver = webdriver.Chrome(executable_path="path/to/chromedriver", chrome_options=options)
将"path/to/your/certificate.pem"替换为实际的证书路径。
导入缺失的SSL库:考虑是否缺少某些必要的SSL库。你可以尝试在代码中显式导入SSL相关的库,以确保它们被正确加载。例如:
import _ssl
import _socket
import httplib
这将尝试显式导入_ssl
、_socket
和httplib
库。
检查pyinstaller打包的相关选项:确保没有遗漏任何必要的依赖项或文件。你可以尝试添加其他的hidden-imports,例如--hidden-import=ssl
,以确保SSL模块得到正确加载。
尝试其他浏览器驱动程序:如果你使用的是Chrome浏览器驱动程序(如Chromedriver),可以尝试使用其他浏览器驱动程序,如Geckodriver(适用于Firefox)或Edgedriver(适用于Edge/Chromium浏览器),以查看是否有所改善。
请尝试以上方法,并根据你的实际情况进行调整。如果问题仍然存在,建议检查代码的其他部分,例如SSL证书的有效性、网络连接等,以进一步排查问题。