Debian and Ubuntu ship a Python 2 interpreter that is linked to a static libpython2.7.a file, instead of a libpython2.7.so dynamic shared library.
They also ship a separate package that provides the dynamic shared library, but it is not used by any of the std extensions or other packages (except for packages that embed the python interpreter in their application).
PySide though, links to the dynamic shared library, which means that two sets of Python symbols are loaded when PySide extensions are loaded: the ones in the interpreter itself, and the ones from the dynamic library.
This causes duplicate symbols, which so far have been resolved by the dynamic loader in a way that made everything work (the shared library symbols were ignored, and the ones in the interpreter were picked up). This seems like depending on implementation behavior, and will lead to crashes if that were ever changed.
There is no need for PySide to link the shared libraries if the Python interpreter does not.
Investigate / implement a way of checking how was the Python interpreter built, and make the proper decision when linking to the shared library is actually necessary.