1

我正在尝试使用 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-Win32\include -L C:\OpenSSL-Win32\lib
    
    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文件,'printsupport'在 QtWebKitWidgets ModuleMetadata 上添加一个:

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

      代替

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

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

      -strip C:$(INSTALL_ROOT)\Python34\pyuic5.bat

      从目标install_pyuic5

  • 测试:不行

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

所以,我的问题是:

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

为什么我要问...如果一切正常,我正在尝试访问(使用 QWebview)一些httpsURL,并且我得到很多或 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

先感谢您!

4

1 回答 1

1

问题解决了!

  1. 下载并安装 OpenSSL 的“Light”版本
  2. 按照上面的过程使用 OpenSSL 支持重建 Qt + 安装 SIP + 安装 PyQt
  3. 复制ssleay32.dll,libeay32.dlllibssl32.dll到 Qt > mingw > bin 文件夹(C:\Qt\Qt5.3.2\5.3\mingw482_32\bin在我的情况下)

现在你可以True在做QSslSocket.supportsSsl()测试时看到一个大的。

于 2014-12-18T01:40:48.313 回答