This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Title: Extending/embedding Python documentation outdated/incomplete
Type: behavior Stage:
Components: Documentation Versions: Python 3.9
Status: open Resolution:
Dependencies: Superseder:
Assigned To: docs@python Nosy List: docs@python, fede.evol
Priority: normal Keywords:

Created on 2021-04-19 09:06 by fede.evol, last changed 2022-04-11 14:59 by admin.

Messages (2)
msg391370 - (view) Author: Federico Pellegrin (fede.evol) Date: 2021-04-19 09:06
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. #21536 or #34309) 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. #36721) 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:

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.

msg391371 - (view) Author: Federico Pellegrin (fede.evol) Date: 2021-04-19 09:11
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?
Date User Action Args
2022-04-11 14:59:44adminsetgithub: 88052
2021-04-19 09:11:00fede.evolsetmessages: + msg391371
2021-04-19 09:06:07fede.evolcreate