Embedding Python in C

Christian Gollwitzer auriocus at gmx.de
Fri Jul 19 12:48:11 EDT 2019


Am 19.07.19 um 16:26 schrieb Jesse Ibarra:
> On Friday, July 19, 2019 at 8:17:43 AM UTC-6, Chris Angelico wrote:
>> On Sat, Jul 20, 2019 at 12:16 AM Jesse Ibarra
>> <jesse.ibarra.1996 at gmail.com> wrote:
>>>
>>> On Thursday, July 18, 2019 at 2:01:39 PM UTC-6, Chris Angelico wrote:
>>>> On Fri, Jul 19, 2019 at 5:51 AM Christian Gollwitzer <auriocus at gmx.de> wrote:
>>>>> Once you can do this, you can proceed to call a Python function, which
>>>>> in C means that you invoke the function PyObject_CallObject(). A basic
>>>>> example is shown here:
>>>>>
>>>>> https://docs.python.org/2/extending/embedding.html#pure-embedding
>>>>>
>>>>
>>>> Or, better:
>>>>
>>>> https://docs.python.org/3/extending/embedding.html#pure-embedding
>>>>
>>>> ChrisA
>>>
>>> I need to call a .so file, but I don't know I way to do that with PyObject. I can only seem to bring in .py files
>>
>> I have vastly insufficient context to be able to even attempt to answer this.
>>
>> ChrisA
> 
> Thank you for your help.
> 
> If this helps. I need PyImport_Import to bring in a C shared lib. (.so file)

So your question is which CPython function is used to load a compiled 
Python extension (.so file). I haven't done this, but it will also be 
not sufficient to import numpy or other packages. These larger packages 
typically have a layer of Python code which acts as a loader and upon 
import loads the corresponding .so files at runtime.

After browsing the C-API, I would try either:

PyImport_ImportModule("numpy")

or even

PyRun_SimpleString("import numpy")

If this does not work, then maybe you need to setup the correct 
PYTHONPATH to point to the places where these packages are installed?

	Christian






More information about the Python-list mailing list