在Windows上使用OpenSSL支持构建PyQt5?

时间:2014-12-10 02:09:18

标签: qt ssl openssl pyqt5 qsslsocket

我尝试使用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文件,在QtWebKitWidgets ModuleMetadata上添加'printsupport'

      '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. 是否需要其他配置?
  3. 为什么我要问......如果一切都是好的",我尝试访问(使用QWebview)一些https网址,而我&#39 ; m得到很多或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 个答案:

答案 0 :(得分:1)

问题解决了!

  1. 下载并安装OpenSSL的“Light”版本
  2. 按照上述步骤使用OpenSSL支持重建Qt +安装SIP +安装PyQt
  3. ssleay32.dlllibeay32.dlllibssl32.dll复制到Qt> mingw> bin文件夹(在我的情况下为C:\Qt\Qt5.3.2\5.3\mingw482_32\bin
  4. 现在,当您进行True测试时,您可以看到一个很大的QSslSocket.supportsSsl()