PythonQt: Как, черт возьми, мне его установить? - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь установить PythonQt для приложения Qt 5.12, которое я строю на Windows. К сожалению, документация очень скудная, и я совсем не знаком с использованием внешних библиотек в моем коде или вообще с разработкой проектов.

Итак, я думаю, что я близок. У меня есть пакетный скрипт, который, я думаю, на самом деле построен PythonQt. Это оставляет меня с некоторыми dll, файлами exp и lib. Некоторые варианты называются PythonQt_QtAll-Qt5-Python38, основанные на версии Python, для которой я создаю, а некоторые называются PythonQt-Qt5-Python38. Я понятия не имею, в чем заключается различие между ними, так как документация не ясна.

Я не уверен, куда идти отсюда, я попытался следовать инструкциям по этой ссылке: https://doc.qt.io/qtcreator/creator-project-qmake-libraries.html,но у меня нет никаких файлов заголовков для включения. Я почти уверен, что мне не следует просто вставлять случайные заголовочные файлы из исходного кода PythonQt в мое приложение.

Вот мой командный файл, который, я думаю, работает, но ничего не ясно:

rem Take current dir
set "crt_dir=%~dp0"

rem Go up one level
for %%I in ("%crt_dir%\..") do set "root=%%~fI"

rem Construct python paths
set "pypath=%root%\Python38-32"
set "pylibpath=%pypath%\libs"

rem Set PYTHON_PATH environmental variable permanently
setx PYTHON_PATH %pypath%
setx PYTHON_LIB %pylibpath%
setx PYTHON_VERSION 38

rem Build PythonQt
rem Fairly sure this is the same command as vcvars32.bat
rem https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=vs-2019
call C:\"Program Files (x86)"\"Microsoft Visual Studio"\2017\Community\VC\Auxiliary\Build\vcvarsall.bat x86 && call c:\Qt\5.12.2\msvc2017\bin\qmake && call C:\"Program Files (x86)"\"Microsoft Visual Studio"\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\nmake /f Makefile || echo Build of PythonQt failed, Exit Code is %errorlevel% 

cmd /k

А вот мой файл python.prf:

# Change this variable to your python version (2.6, 2.7, 3.3, ...)
PYTHON_VERSION=$$(PYTHON_VERSION)
isEmpty( PYTHON_VERSION ) {
  win32:PYTHON_VERSION=38
  unix:PYTHON_VERSION=3.8
}


macx {
  # for macx you need to have the Python development kit installed as framework
  INCLUDEPATH += /System/Library/Frameworks/Python.framework/Headers
  LIBS += -F/System/Library/Frameworks -framework Python
} else:win32 {
  # for windows install a Python development kit or build Python yourself from the sources
  # Make sure that you set the environment variable PYTHON_PATH to point to your
  # python installation (or the python sources/header files when building from source).
  # Make sure that you set the environment variable PYTHON_LIB to point to
  # the directory where the python libs are located.
  #
  # When using the prebuild Python installer, this will be:
  # set PYTHON_PATH = c:\Python26
  # set PYTHON_LIB  = c:\Python26\libs
  #
  # When using the python sources, this will be something like:
  # set PYTHON_PATH = c:\yourDir\Python-2.6.1\
  # set PYTHON_LIB  = c:\yourDir\Python-2.6.1\PCbuild8\Win32

  # check if debug or release
  CONFIG(debug, debug|release) {
    DEBUG_EXT = #_d 
  } else {
    DEBUG_EXT = 
  }

  win32:INCLUDEPATH += $$(PYTHON_PATH)/PC $$(PYTHON_PATH)/include
  win32:LIBS += $$(PYTHON_LIB)/python$${PYTHON_VERSION}$${DEBUG_EXT}.lib
} else:unix {
  # on linux, python-config is used to autodetect Python.
  # make sure that you have installed a matching python-dev package.

  unix:LIBS += $$system(python$${PYTHON_VERSION}-config --ldflags)
  unix:QMAKE_CXXFLAGS += $$system(python$${PYTHON_VERSION}-config --includes)
}

И мой common.prf:

# depending on your Qt configuration, you want to enable or disable
# one of the release/debug builds (if all three lines are commented,
# the default of your Qt installation will used)

# build with both debug and release mode
#CONFIG += debug_and_release build_all

# build with release mode only
#CONFIG += release

# build with debug mode only
#CONFIG += debug

# for all debug builds, add "_d" extension to target
CONFIG(debug, debug|release) {
  TARGET = $${TARGET}_d 
}

# Try files that are generated by the user:
PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp

!exists($$PYTHONQT_GENERATED_PATH) {
  # If no files are generated, try the checked-in wrappers:
  PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_$${QT_MAJOR_VERSION}$${QT_MINOR_VERSION}

  !exists($$PYTHONQT_GENERATED_PATH) {
    contains( QT_MAJOR_VERSION, 5 ) {
      contains( QT_MINOR_VERSION, 10 ) { 
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_56
      }
      else:contains( QT_MINOR_VERSION, 11 ) { 
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_511
      }
      else:contains( QT_MINOR_VERSION, 12 ) {
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_511
      }
      else:contains( QT_MINOR_VERSION, 1 ) {
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_50
      }
      else:contains( QT_MINOR_VERSION, 2 ) {
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_50
      }
      else:contains( QT_MINOR_VERSION, 3 ) { 
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_53
      }
      else:contains( QT_MINOR_VERSION, 4 ) { 
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_54
      }
      else:contains( QT_MINOR_VERSION, 5 ) { 
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_54
      }
      else:contains( QT_MINOR_VERSION, 6 ) { 
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_56
      }
      else:contains( QT_MINOR_VERSION, 7 ) { 
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_56
      }
      else:contains( QT_MINOR_VERSION, 8 ) { 
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_56
      }
      else:contains( QT_MINOR_VERSION, 9 ) { 
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_56
      }
      else {
        PYTHONQT_GENERATED_PATH = $$PWD/../generated_cpp_56
      }
    }
  }
}

VERSION = 3.2.0

# Suppress the automatic version number appended to the DLL file name on Windows.
win32: CONFIG += skip_target_version_ext

Итак, я считаю, что я собрал PythonQt и у меня есть несколько исполняемых файлов для проектов примеров PythonQt, а также файл dll, exp и lib,для PythonQt-Qt5-Python38 и PythonQt_QtAll-Qt5-Python38, соответственно. Куда мне идти отсюда?

1 Ответ

0 голосов
/ 10 ноября 2019

ответ был в примерах все время. Как только PythonQt собран, вам просто нужно включить все соответствующие файлы .prf из него в файл .pro для вашего проекта, например:

include ( ./third_party/PythonQt/build/common.prf )  
include ( ./third_party/PythonQt/build/PythonQt.prf )  
include ( ./third_party/PythonQt/build/PythonQt_QtAll.prf )  

Тем не менее, будут приветствоваться любые ответы о том, как скомпилировать PythonQt в библиотеку. , но мой оригинальный вопрос был решен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...