[C++-sig] embedded Python: Access an object defined previously in C++

Stefan Seefeld seefeld at sympatico.ca
Wed Dec 28 16:51:37 CET 2005


Markus Heller wrote:

> Is it sufficient that the BOOST_PYTHON_MODULE block stands just below all the 
> other functions in the according cpp file? 

I don't understand the question. What do you mean by 'all the other functions' ?
The BOOST_PYTHON_MODULE block is used to export specific C++ types / functions
to python, and tells the python module loader how to find them.


> I want to call a Python script from within one of the functions of this class. 
> This Python script will need to import the pipeline module. What are the 
> necessare preconditions to allow the script to load my exported function?
> 
> Do I need to reset the PYTHONPATH variable? Does this variable need to point 
> to where the binary is? Notabene, it is not a shared object...

That depends. When you want to load it as an ordinary python module, it has to
be a shared object, and it must be in your PYTHONPATH. However:

* you may adjust your PYTHONPATH programmatically just before loading the
   module

* you may be able to register the python module programmatically such that
   the loader isn't involved at all, i.e. the module doesn't need to be in
   a DSO. I have never done that myself, though, so I can't give any specific
   advice. Some experimentation may be necessary.

HTH,
		Stefan




More information about the Cplusplus-sig mailing list