Files
Neil Roberts bef9383868 tdf#169387 tdf#168461 Use Py_InitializeFromConfig
The commit below tried to change pythonloader to set the Python home
using PyConfig instead of setting PYTHONHOME. However, it only built up
the PyConfig locally on the stack and never actually passed it to
Python. This meant that when building with Python versions >= 3.8 the
Python home was never actually set. When using an internal Python, it
ended up printing an error message about not being able to find platform
independent libraries.

commit da0e9240bf
Author: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Date:   Thu Dec 21 12:01:50 2023 +0200

    tdf#158447 Use PyConfig for setting Python home directory with Python >= 3.8

    Change-Id: Ic5b7c60613b22f5215cb1a2a13fecf3e0946ca49
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161089

Change-Id: Icda3b0e538b958a04357027c486fd3af17a8fca1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211289
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
(cherry picked from commit e11160b50b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211301
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-22 16:03:28 +02:00
..
…
…
…
…

Python UNO Bindings

UNO bindings for the Python programming language.

To have much joy debugging Python extensions you need to:

  • a) edit pythonloader.py in your install setting DEBUG=1 at the top
  • b) touch pyuno/source/module/pyuno_runtime.cxx and make debug=true in pyuno

Then you'll start to see your exceptions on the console instead of them getting lost at the UNO interface.

Python also comes with a gdb script libpython$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)m.so.1.0-gdb.py that is copied to instdir and will be auto-loaded by gdb; it provides commands like py-bt to get a Python-level backtrace, and py-print to print Python variables.

Another way to debug Python code is to use pdb: edit some initialization function to insert import pdb; pdb.set_trace() (somewhere so that it is executed early), then run soffice from a terminal and a command-line Python debugger will appear where you can set Python-level breakpoints.