在支持 OpenSSL 的 Windows 上构建 PyQt5



我正在尝试构建支持SSL的PyQt5,但直到现在,我根本没有成功。

我做了什么:

  • 使用OpenSSL支持重建Qt:确定

    configure.exe -static -debug-and-release -opensource -confirm-license -nomake examples -nomake tests -opengl desktop -platform win32-g++ -openssl-linked OPENSSL_LIBS="-lssleay32 -llibeay32" -I C:OpenSSL-Win32include -L C:OpenSSL-Win32lib
    mingw32-make
    
  • 安装 SIP:确定

    python configure.py -p win32-g++
    mingw32-make
    mingw32-make install
    
  • 安装 PyQt5:确定

    python configure.py --spec=win32-g++
    mingw32-make
    mingw32-make install
    
    • 编辑configure.py文件,在QtWebKitWidgets ModuleMetadata上添加一个'printsupport'

      'QtWebKitWidgets': ModuleMetadata(qmake_QT=['webkitwidgets', 'printsupport']),

      而不是

      'QtWebKitWidgets': ModuleMetadata(qmake_QT=['webkitwidgets']),

    • 在(或之前?)mingw32-make之后,删除该行

      -strip C:$(INSTALL_ROOT)Python34pyuic5.bat

      从目标install_pyuic5

  • 测试:不正常

    >>> from PyQt5.QtNetwork import QSslSocket
    >>> QSslSocket.supportsSsl()
    False
    

所以,我的问题是:

  1. 我做错了什么吗?
  2. 是否需要其他配置?

为什么我问...如果一切正常,我正在尝试访问(使用 QWebview)一些https URL,并且我得到很多或 SSL 错误,例如:

    QSslSocket: cannot call unresolved function SSLv23_client_method
    QSslSocket: cannot call unresolved function SSL_CTX_new
    QSslSocket: cannot call unresolved function SSL_library_init
    QSslSocket: cannot call unresolved function ERR_get_error

提前谢谢你!

问题

解决了!

  1. 下载并安装OpenSSL的"轻量级"版本
  2. 按照上述过程使用 OpenSSL 支持 + 安装 SIP + 安装 PyQt 重建 Qt
  3. ssleay32.dlllibeay32.dlllibssl32.dll复制到 Qt> mingw> bin 文件夹(在我的情况下C:QtQt5.3.25.3mingw482_32bin

现在,当您进行QSslSocket.supportsSsl()测试时,您可以看到很大的True

相关内容

  • 没有找到相关文章

最新更新