aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/doc/deployment.rst
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside2/doc/deployment.rst')
-rw-r--r--sources/pyside2/doc/deployment.rst156
1 files changed, 100 insertions, 56 deletions
diff --git a/sources/pyside2/doc/deployment.rst b/sources/pyside2/doc/deployment.rst
index c81e85c61..3d6aa218e 100644
--- a/sources/pyside2/doc/deployment.rst
+++ b/sources/pyside2/doc/deployment.rst
@@ -1,72 +1,115 @@
-Deployment
-##########
+|project| Deployment
+====================
-Deploying or freezing an application is a crucial part of many Python projects.
-Most large projects are not based on a single Python file, so
-the distribution of these applications becomes more difficult.
-Here are a few distribution options that you could use:
- 1. Sending a normal zip-file with the application's content.
- 2. Building a proper `Python package (wheel) <https://packaging.python.org/>`_.
- 3. Freezing the application into a single binary file or a directory.
+Deploying or freezing an application is an important part of a Python project,
+this means to bundle all required resources so that the application finds everything it needs to
+be able to run on a client's machine.
+However, because most large projects aren't based on a single Python file, distributing these
+applications can be a challenge.
-.. _fbs: https://build-system.fman.io/
-
-.. _pyinstaller: https://www.pyinstaller.org/
-
-.. _cxfreeze: https://anthony-tuininga.github.io/cx_Freeze/
-
-.. _py2exe: http://www.py2exe.org/
+Here are a few distribution options that you can use:
+ 1. Send a normal ZIP file with the application's content.
+ 2. Build a proper `Python package (wheel) <https://packaging.python.org/>`_.
+ 3. Freeze the application into a single binary file or directory.
+ 4. Provide native installer (msi, dmg)
-.. _py2app: https://py2app.readthedocs.io/en/latest/
-
-If you choose the **third** option, consider using one of these tools:
+If you choose Option 3, consider using one of these tools:
* `fbs`_
- * `PyInstaller <pyinstaller>`_
- * `cx_Freeze <cxfreeze>`_
+ * `PyInstaller`_
+ * `cx_Freeze`_
* `py2exe`_
* `py2app`_
+ * `briefcase`_
-
-|project| is a cross-platform framework,
-so we would like to focus on solutions that work on the three
-major platforms supported by Qt: Linux, macOS, and Windows.
-The following table summarizes the platform support for those packaging
-tools:
-
-=========== ======= ===== ===== =======
-Name License Linux macOS Windows
-=========== ======= ===== ===== =======
-fbs GPL yes yes yes
-PyInstaller GPL yes yes yes
-cx_Freeze MIT yes yes yes
-py2exe MIT no no yes
-py2app MIT no yes no
-=========== ======= ===== ===== =======
-
-According to this table, only *fbs*, *cx_Freeze*, and *PyInstaller*
-meets our cross-platform requirement.
-
-As these are command-line tools, it could be hard to include
-resources to your application, such as images, icons, and
-meta-information. This means, you will need special hooks
-or scripts to handle them before adding to the package.
-In addition to this, these tools does not offer a mechanism
-to update your application packages.
-
-To create update packages, use the `PyUpdater <https://www.pyupdater.org/>`_,
-which is built around PyInstaller.
-
-The `fbs <https://build-system.fman.io>`_ tool offers a nice UI
-that allows the user to install the application step-by-step.
-
-Here you can find a set of tutorials on how to use the previously
-described tools.
+.. _fbs: https://build-system.fman.io/
+.. _PyInstaller: https://www.pyinstaller.org/
+.. _cx_Freeze: https://anthony-tuininga.github.io/cx_Freeze/
+.. _py2exe: http://www.py2exe.org/
+.. _py2app: https://py2app.readthedocs.io/en/latest/
+.. _briefcase: https://briefcase.readthedocs.io
+
+Since |project| is a cross-platform framework, we focus on solutions for the three major
+platforms that Qt supports: Windows, Linux, and macOS.
+
+The following table summarizes the platform support for those packaging tools:
+
+.. raw:: html
+
+ <table class="docutils align-default">
+ <thead>
+ <tr>
+ <th class="head">Name</th>
+ <th class="head">License</th>
+ <th class="head">Linux</th>
+ <th class="head">macOS</th>
+ <th class="head">Windows</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><p>fbs</p></td>
+ <td><p>GPL</p></td>
+ <td><p style="color: green;">yes</p></td>
+ <td><p style="color: green;">yes</p></td>
+ <td><p style="color: green;">yes</p></td>
+ </tr>
+ <tr>
+ <td><p>PyInstaller</p></td>
+ <td><p>GPL</p></td>
+ <td><p style="color: green;">yes</p></td>
+ <td><p style="color: green;">yes</p></td>
+ <td><p style="color: green;">yes</p></td>
+ </tr>
+ <tr>
+ <td><p>cx_Freeze</p></td>
+ <td><p>MIT</p></td>
+ <td><p style="color: green;">yes</p></td>
+ <td><p style="color: green;">yes</p></td>
+ <td><p style="color: green;">yes</p></td>
+ </tr>
+ <tr>
+ <td><p>py2exe</p></td>
+ <td><p>MIT</p></td>
+ <td><p style="color: red;">no</p></td>
+ <td><p style="color: red;">no</p></td>
+ <td><p style="color: green;">yes</p></td>
+ </tr>
+ <tr>
+ <td><p>py2app</p></td>
+ <td><p>MIT</p></td>
+ <td><p style="color: red;">no</p></td>
+ <td><p style="color: green;">yes</p></td>
+ <td><p style="color: red;">no</p></td>
+ </tr>
+ <tr>
+ <td><p>briefcase</p></td>
+ <td><p>BSD3</p></td>
+ <td><p style="color: green;">yes</p></td>
+ <td><p style="color: green;">yes</p></td>
+ <td><p style="color: green;">yes</p></td>
+ </tr>
+ </tbody>
+ </table>
+
+Notice that only *fbs*, *cx_Freeze*, *briefcase*, and *PyInstaller* meet our cross-platform requirement.
+
+Since these are command-line tools, you'll need special hooks or scripts to handle resources
+such as images, icons, and meta-information, before adding them to your package. Additionally,
+these tools don't offer a mechanism to update your application packages.
+
+To create update packages, use the `PyUpdater <https://www.pyupdater.org/>`_, which is a tool
+built around PyInstaller.
+
+The `fbs`_ tool offers a nice UI for the user to install the
+application step-by-step.
.. note::
Deployment is supported only from Qt for Python 5.12.2 and later.
+Here's a set of tutorials on how to use these tools:
+
.. toctree::
:name: mastertoc
:maxdepth: 2
@@ -74,3 +117,4 @@ described tools.
deployment-fbs.rst
deployment-pyinstaller.rst
deployment-cxfreeze.rst
+ deployment-briefcase.rst