Difference between revisions of "Qt for Python/GettingStarted"

From Qt Wiki
Jump to: navigation, search
 
(37 intermediate revisions by 7 users not shown)
Line 1: Line 1:
[[Category:PySide]]                                                                 
+
[[Category:Qt for Python]]                                                                                                                              
                                                                                   
+
== Official documentation ==
== Getting Started ==                                                                                                                                                 
 
You can install PySide2 by building the source package yourself.                   
 
                                                                                   
 
After cloning the official repository you must follow the instructions for        
 
your specific system.                                                                                                                                                   
 
=== Platform Requirements ===                                                                                                                                         
 
* '''Python''':                                                                       
 
** Python 3 (version >= 3.5 recommended) and Python 2 (version >= 2.7 recommended).
 
* '''Qt''':                                                                             
 
** 5.6 onward are supported, but 5.9 (recommended).
 
* '''CLANG''':                                                                         
 
** The Clang library (C-bindings), version 3.9 or higher is required for building using the PySide 5.9 branch.
 
** Prebuilt versions of it can be downloaded from [http://download.qt.io/development_releases/prebuilt/libclang/ download.qt.io].
 
* '''CMake''':                                                                         
 
** The build system required by for building PySide2.
 
=== Building PySide2 ===                                                                                       
 
The building processes are covered in the platform pages.                                                                                                               
 
* [[PySide2_Windows|Windows]]                                                         
 
* [[PySide2_X11|Linux/X11]]                                                     
 
* [[PySide2_MacOS|macOS]]                                                                                  
 
==== setup.py build script ====                                                                                                                                         
 
The script ''setup.py'' in the [http://code.qt.io/cgit/pyside/pyside-setup.git/ top level repository] is used to build and install the PySide2 package. It takes a mode argument (''build'' or ''install'') and several options (more options are documented in setup.py itself).·                                                                                   
 
The main options are:                                                               
 
* ''--qmake=/path/to/qmake'': Path to ''qmake'' of the Qt library to be used                   
 
* ''--cmake=/path/to/cmake'': Path to ''cmake'' binary                                               
 
* ''--build-tests'': Builds tests along with some helper packages
 
* ''--ignore-git'': Prevents ''setup.py'' from cloning and checking out the git submodules.
 
* ''--debug'': Build in Debug mode (some restrictions apply to Windows)
 
* ''--reuse-build'': Rebuilds only modified files
 
* ''--openssl=C:\Dev\qtdev\OpenSSL-Win64\bin'': Path to OpenSSL's bindir which contains dlls (Only required for Windows PySide2 packages)
 
* ''--jobs=#'': Number of # processes to use when building                                                                                                                       
 
A typical invocation looks like:                                                   
 
python setup.py install --build-tests --jobs=4                                                                                                                     
 
A successful build can be tested by running an example:                             
 
  python sources/examples/widgets/widgets/tetrix.py                                                                                                 
 
You can search for working examples by typing                                       
 
  cd sources/examples                                                       
 
  git grep "PySide2 port"
 
 
 
=== Running Tests ===                                                               
 
To perform all the available tests, just execute:                                                                                   
 
python testrunner.py test  > testlog.txt
 
  
Note that to successfully run the tests on Windows you need to point the PATH environment variable to the Qt libdir:
+
Refer to the [https://doc.qt.io/qtforpython/gettingstarted.html official docs] to start building and using Qt for Python.
set PATH=E:\Qt\5.9\msvc2015_64\bin;%PATH%
 
  
Run only one test(qpainter_test):                                                                                                                                     
+
== Using Qt Creator as a project explorer ==                                       
ctest -R qpainter_test --verbose
 
 
 
=== Building the Documentation ===                                                 
 
                                                                                   
 
This is currently unexplored terrain [https://bugreports.qt.io/browse/PYSIDE-363 PYSIDE-363].
 
* The sources are in pyside2/doc                                                   
 
* libXML2 and libXSLT should be present when building PySide2 (Ubuntu: apt-get install libxml2-dev libxslt1-dev)
 
* graphviz + dot should be installed                                               
 
* QT_SRC_DIR needs to be set                                                       
 
* sphinx should be installed (pip install sphinx)                                   
 
* qdoc3 is used to generate it                                                                                                                                                                                                           
 
=== Using Qt Creator as a project explorer ===                                       
 
 
Qt Creator 4.0+ can be used to open the PySide and Shiboken CMakeLists.txt files as projects, and thus provide usual IDE features for developing PySide - project file navigation, code completion (C++ only), following symbols under cursor (C++ only), syntax highlighting, locator usage, debugging, etc.
 
Qt Creator 4.0+ can be used to open the PySide and Shiboken CMakeLists.txt files as projects, and thus provide usual IDE features for developing PySide - project file navigation, code completion (C++ only), following symbols under cursor (C++ only), syntax highlighting, locator usage, debugging, etc.
 
                                                                                      
 
                                                                                      
Currently there is a limitation that Shiboken has to be built first using the terminal, because the installed shiboken CMake packages will have to be specified for the PySide project in Qt Creator.
+
Currently, there is a limitation that Shiboken has to be built first using the terminal because the installed shiboken CMake packages will have to be specified for the PySide project in Qt Creator.
                                                                                   
+
 
 
The steps for opening the projects in Qt Creator are:                                 
 
The steps for opening the projects in Qt Creator are:                                 
# Open pyside-setup/sources/shiboken2/CMakeLists.txt, and specify a 5.6 Qt Kit to be used
+
# Open '''pyside-setup/sources/shiboken2/CMakeLists.txt''' and specify a 5.12+ Qt Kit to be used
# Build the project as usual (by pressing the build icon for instance)               
+
# Build the project as usual (by pressing the '''build''' icon for instance)               
# Open pyside-setup/sources/pyside2/CMakeLists.txt, and specify the same 5.6 Qt Kit   
+
# Open '''pyside-setup/sources/pyside2/CMakeLists.txt''' and specify the same 5.12+ Qt Kit   
# Go to projects tab, and under the Build / CMake section find the Shiboken2_DIR setting. You have to specify the path to the folder where the Shiboken CMake package was installed when you compiled Shiboken from the terminal·
+
# Go to the projects tab, and under the Build / CMake section find the Shiboken2_DIR setting. You have to specify the path to the folder where the Shiboken CMake package was installed when you compiled Shiboken from the terminal·
# An example path under MacOS is /Users/user/Dev/pyside2-setup/pyside_install/py2.7-qt5.6.1-64bit-debug/lib/cmake/Shiboken2-2.0.0. The path has to be adjusted depending on the user folder name, the version of python and qt, etc
+
# An example path under macOS is '''/Users/user/Dev/pyside2-setup/pyside_install/py3.6-qt5.12.1-64bit-debug/lib/cmake/Shiboken2-2.0.0'''. The path has to be adjusted depending on the user folder name, the version of python and qt, etc
# (Optional) On MacOS you also have to set the ALTERNATIVE_QT_INCLUDE_DIR setting to the Qt kit include path (e.g. /Users/user/Dev/qt56_source/include)                                                                                                                                                                                                                                                                                                                                     
+
# (Optional) On MacOS you also have to set the '''ALTERNATIVE_QT_INCLUDE_DIR''' setting to the Qt kit include path (e.g. '''/Users/user/Dev/qt511_source/include''')                                                                                                                                                                                                                                                                                                                                     
 
# Apply the CMake configuration changes (by pressing the button), and you should be able to build PySide
 
# Apply the CMake configuration changes (by pressing the button), and you should be able to build PySide
 
                                                                                      
 
                                                                                      
Line 81: Line 26:
 
* PySide2 looks at the system installation if the local Qt version does not have a required module
 
* PySide2 looks at the system installation if the local Qt version does not have a required module
 
**The only workaround is to uninstall any module from the system, then PySide2 can look at only the Qt path currently being use.
 
**The only workaround is to uninstall any module from the system, then PySide2 can look at only the Qt path currently being use.
* Building Linux standalone packages will currently attempt to download libICU from the internet. This will be fixed soon.
+
* Qt packages that directly link to OpenSSL (as opposed to runtime discovery) are not currently supported.
 +
* Make sure that the Python environment location where the PySide2 package will be installed is writable (otherwise you might get various permission denied errors). The install location can be found with 99% probability by running:
 +
python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
 +
* Building failing because graphviz wasn't found. If you're using pyenv and installed it using pip, try to install it using your package manager:<syntaxhighlight>
 +
dnf install graphviz.x86_64 #Fedora
 +
</syntaxhighlight>

Latest revision as of 11:53, 20 March 2020

Official documentation

Refer to the official docs to start building and using Qt for Python.

Using Qt Creator as a project explorer

Qt Creator 4.0+ can be used to open the PySide and Shiboken CMakeLists.txt files as projects, and thus provide usual IDE features for developing PySide - project file navigation, code completion (C++ only), following symbols under cursor (C++ only), syntax highlighting, locator usage, debugging, etc.

Currently, there is a limitation that Shiboken has to be built first using the terminal because the installed shiboken CMake packages will have to be specified for the PySide project in Qt Creator.

The steps for opening the projects in Qt Creator are:

  1. Open pyside-setup/sources/shiboken2/CMakeLists.txt and specify a 5.12+ Qt Kit to be used
  2. Build the project as usual (by pressing the build icon for instance)
  3. Open pyside-setup/sources/pyside2/CMakeLists.txt and specify the same 5.12+ Qt Kit
  4. Go to the projects tab, and under the Build / CMake section find the Shiboken2_DIR setting. You have to specify the path to the folder where the Shiboken CMake package was installed when you compiled Shiboken from the terminal·
  5. An example path under macOS is /Users/user/Dev/pyside2-setup/pyside_install/py3.6-qt5.12.1-64bit-debug/lib/cmake/Shiboken2-2.0.0. The path has to be adjusted depending on the user folder name, the version of python and qt, etc
  6. (Optional) On MacOS you also have to set the ALTERNATIVE_QT_INCLUDE_DIR setting to the Qt kit include path (e.g. /Users/user/Dev/qt511_source/include)
  7. Apply the CMake configuration changes (by pressing the button), and you should be able to build PySide

Now you can use the project explorer to look through the source cpp files, python files, use the locator feature to open files and file classes / methods, and other features that Qt Creator provides.

Troubleshooting / Known Issues

  • Qt 5.9 does not work with OpenSSL 1.1
    • When doing a custom Qt build (some unspecified versions for now), It is necessary to have an OpenSSL version of 1.0.x, since there are compatibility issues with newer versions of OpenSSL (see details)
  • PySide2 looks at the system installation if the local Qt version does not have a required module
    • The only workaround is to uninstall any module from the system, then PySide2 can look at only the Qt path currently being use.
  • Qt packages that directly link to OpenSSL (as opposed to runtime discovery) are not currently supported.
  • Make sure that the Python environment location where the PySide2 package will be installed is writable (otherwise you might get various permission denied errors). The install location can be found with 99% probability by running:
python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
  • Building failing because graphviz wasn't found. If you're using pyenv and installed it using pip, try to install it using your package manager:
    dnf install graphviz.x86_64 #Fedora