Собрать PyQt5 в Windows с поддержкой OpenSSL?

Я пытаюсь собрать PyQt5 с поддержкой SSL, но до сих пор у меня ничего не получилось.

Что я наделал:

  • Перестройка Qt с поддержкой OpenSSL: ОК

    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) к некоторым 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

Заранее спасибо!


person DiogoLR    schedule 10.12.2014    source источник


Ответы (1)


Задача решена!

  1. Загрузите и установите «Облегченную» версию OpenSSL.
  2. Следуйте описанной выше процедуре, чтобы перестроить Qt с поддержкой OpenSSL + Установить SIP + Установить PyQt
  3. Скопируйте ssleay32.dll, libeay32.dll и libssl32.dll в папку Qt> mingw> bin (C:\Qt\Qt5.3.2\5.3\mingw482_32\bin в моем случае)

Теперь вы можете увидеть большой True при выполнении QSslSocket.supportsSsl() теста.

person DiogoLR    schedule 18.12.2014