[Python-Dev] Use C extensions compiled in release mode on a Python compiled in debug mode

Matthias Klose doko at ubuntu.com
Thu Apr 25 07:41:38 EDT 2019

On 25.04.19 13:26, Victor Stinner wrote:
> I looked how fonforge gets compiler and linker flags to embed Python:
> it seems like to "pkg-config --libs python-2.7" which returns
> "-lpython2.7". My PR doesn't change Misc/python.pc. Should I modify
> Misc/python.pc as well... or not? :-) I'm not used to pkg-config. I
> don't know if it's common that C extensions are built using
> pkg-config. I guess that distutils is more commonly used to build C
> extensions.

... except for all the software which is doing some embedding (e.g. vim), or is
building some bindings as part of the upstream software. So yes, there is some
stuff ...

The tendency seems to deprecate your own config helper in favor of pkgconfig.
However I'm not sure how this would do with the current MacOS python-config
python script.  If we want to differentiate between embedding and extensions,
then we need two different module names, maybe keeping the current one for
extensions, and having a new one for embedding.

Not sure about python-config, if we want a new helper for embedding, or add new
options for the existing script.

> Victor
> Le jeu. 25 avr. 2019 à 12:53, Victor Stinner <vstinner at redhat.com> a écrit :
>> Le jeu. 25 avr. 2019 à 09:30, Matthias Klose <doko at ubuntu.com> a écrit :
>>> the purpose of python-config here is not clear. Whether it's intended to be used
>>> for linking extensions, or embedded interpreters. Currently you are using the
>>> same for both use cases.
>> My PR 12946 removes libpython from distutils, python-config and
>> python-config.py:
>> https://github.com/python/cpython/pull/12946
>> Do you mean that this change will break the build of applications
>> embedding Python? If yes, what can done to fix that?
>> Provide a different script to the specific case of embedded Python? Or
>> add a new option to specify that you are embedding Python?
>> In Python 3.7, the required linker flag is "-lpython3.7m". It's not
>> trivial to guess the "m" suffix. FYI Python 3.8 it becames just
>> "-lpython3.8": I removed the "m" suffix which was useless.
>> Victor
>> --
>> Night gathers, and now my watch begins. It shall not end until my death.

More information about the Python-Dev mailing list