在具有 OpenSSL 支持的 Windows 上构建 PyQt5?

Posted

技术标签:

【中文标题】在具有 OpenSSL 支持的 Windows 上构建 PyQt5?【英文标题】:Build PyQt5 on Windows with OpenSSL support? 【发布时间】:2014-12-10 02:09:17 【问题描述】:

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

我做了什么:

使用 OpenSSL 支持重建 Qt:OK

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

所以,我的问题是:

    我做错了什么吗? 还需要其他配置吗?

为什么我要问这个...如果一切正常,我正在尝试访问(使用 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 的“Light”版本 按照上述步骤重建支持 OpenSSL 的 Qt + 安装 SIP + 安装 PyQt 将ssleay32.dlllibeay32.dlllibssl32.dll 复制到Qt > mingw > bin 文件夹(在我的情况下为C:\Qt\Qt5.3.2\5.3\mingw482_32\bin

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

【讨论】:

以上是关于在具有 OpenSSL 支持的 Windows 上构建 PyQt5?的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上创建 OpenSSL 证书 [关闭]

在 Windows 上的 Apache/PHP 中禁用 OpenSSL 支持

WIN下如何在PHP扩展里打开openssl支持

怎么在windows上openssl颁发代码签名证书?

如何使用 Visual Studio 2017 在 Windows 上构建 OpenSSL?

Windows下 OpenSSL的安装与简单使用