You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello,
We had lately some issues with various possible variants of compilation (static vs dynamic) with reference to both embedding and extending Python. There are a bunch of tickets on the topic (ie. gh-65735 or gh-78490) but I guess one important point is that the documentation seems to be not very clear on this. Also various Linux distros seem to take very different approaches (static/dynamic).
Infact from the current documentation it seems unclear if python-config should be used for both or not. We found also some references to a newer --embed flag (see ie. gh-80902) which is not mentioned in the documentation.
Some other sources suggest that python-config should not be used when Python is build with Py_ENABLE_SHARED=1. (ref. here: conda/conda-build#2738 (comment))
Also the example looks probably outdated, as it mentions Python 3.4
It would be nice if some light would be shed on the correct practice to use and the official documentation updated.
Specifically in the documentation it talks about embedding:
"
It is not necessarily trivial to find the right flags to pass to your compiler (and linker) in order to embed the Python interpreter into your application, particularly because Python needs to load library modules implemented as C dynamic extensions (.so files) linked against it.
To find out the required compiler and linker flags, you can execute the pythonX.Y-config script which is generated as part of the installation process (a python3-config script may also be available). This script has several options, of which the following will be directly useful to you:
"
But doesn't really say anything about extensions. Is the same python-config used therefore for extensions as well?
The CPython project provides a python-config, but also it's up to the redistributor (Linux distros, Conda, etc.) to make sure this gets installed and matches the install location.
With distutils gone, more responsibility now lies with third-party projects such as setuptools. See also PEP-739 for recent related development.
The forum is a much better place for discussions like this. Issues work better if they describe a task to be done in this repo.
With that, I'll close the issue here.
Activity
fedeevol commentedon Apr 19, 2021
Hello,
We had lately some issues with various possible variants of compilation (static vs dynamic) with reference to both embedding and extending Python. There are a bunch of tickets on the topic (ie. gh-65735 or gh-78490) but I guess one important point is that the documentation seems to be not very clear on this. Also various Linux distros seem to take very different approaches (static/dynamic).
Infact from the current documentation it seems unclear if python-config should be used for both or not. We found also some references to a newer --embed flag (see ie. gh-80902) which is not mentioned in the documentation.
Some other sources suggest that python-config should not be used when Python is build with Py_ENABLE_SHARED=1. (ref. here: conda/conda-build#2738 (comment))
Also the example looks probably outdated, as it mentions Python 3.4
It would be nice if some light would be shed on the correct practice to use and the official documentation updated.
Thanks,
Federico
fedeevol commentedon Apr 19, 2021
Just a small addition:
Specifically in the documentation it talks about embedding:
"
It is not necessarily trivial to find the right flags to pass to your compiler (and linker) in order to embed the Python interpreter into your application, particularly because Python needs to load library modules implemented as C dynamic extensions (.so files) linked against it.
To find out the required compiler and linker flags, you can execute the pythonX.Y-config script which is generated as part of the installation process (a python3-config script may also be available). This script has several options, of which the following will be directly useful to you:
"
But doesn't really say anything about extensions. Is the same python-config used therefore for extensions as well?
encukou commentedon Jun 18, 2025
The CPython project provides a
python-config, but also it's up to the redistributor (Linux distros, Conda, etc.) to make sure this gets installed and matches the install location.With
distutilsgone, more responsibility now lies with third-party projects such as setuptools. See also PEP-739 for recent related development.The forum is a much better place for discussions like this. Issues work better if they describe a task to be done in this repo.
With that, I'll close the issue here.