Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #71690
| From | Stefan Behnel <stefan_ml@behnel.de> |
|---|---|
| Subject | Re: Loading modules from files through C++ |
| Date | 2014-05-17 16:01 +0200 |
| References | <5376ACE7.8030706@rptd.ch> <ll7iu1$oge$1@ger.gmane.org> <53775D68.2010009@rptd.ch> <ll7o30$pc3$1@ger.gmane.org> <537768FB.7060303@rptd.ch> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.10087.1400335301.18130.python-list@python.org> (permalink) |
Hi, please avoid top-posting. Roland Plüss, 17.05.2014 15:49: > On 05/17/2014 03:26 PM, Stefan Behnel wrote: >> Roland Plüss, 17.05.2014 15:00: >>> On 05/17/2014 01:58 PM, Stefan Behnel wrote: >>>> Roland Plüss, 17.05.2014 02:27: >>>>> I'm using Python in an embedded situation. In particular I have to load >>>>> python scripts through a memory interface so regular python module >>>>> loading can not be used. I got working so far a module loader object >>>>> I've added using C++ to sys.meta_path . Now I'm totally stuck at the >>>>> finally loading step. >>>>> >>>>> I've got this a C++ loader method "load_module(fullname)" which does >>>>> load the requested module script files into a null-terminated string. I >>>>> know that "load_module" has to return the module PyObject*. But I can't >>>>> get the python source in the c-string into a module PyObject*. >>>>> [...] >>>>> Can anybody help how in gods name one is supposed to create a module >>>>> from an in-memory c-string when called from within load_module (or >>>>> anywhere)? >>>> Looks like you want to implement a SourceLoader: >>>> >>>> https://docs.python.org/3.4/library/importlib.html#importlib.abc.SourceLoader >>>> >>>> I recommend implementing this in Python code instead of C code, though. >>>> Much easier. Cython can help with the integration between both. >>> That doesn't work in 2.x, doesn't it? >> Is there a reason you have to use Py2? >> >> Anyway, PEP 302 predates Py3 by a couple of years: >> >> http://legacy.python.org/dev/peps/pep-0302/ > > I'm willing to go to Py3 but only if the solution to the problem is > simpler than getting it fixed in Py2. So some questions first: > > - does this importlib stuff you showed there apply to C++ land (I need > to fully drive it from C++ not Python code)? As I said, implementing this in Python code is much simpler than doing it in C/C++ code. Basically, stop where you got the C string and do the rest in Python. All your C code has to do is to take a module lookup request from your custom Python module Finder and return a byte string with the code. Then let your Python code wrap that in a Loader and return it to the import machinery. > - is the C++ land of Py3 similar to Py2 or totally different? Much the same, just slight differences. As I said, Cython can help with the integration and would mostly cover the differences for you. Stefan
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: Loading modules from files through C++ Stefan Behnel <stefan_ml@behnel.de> - 2014-05-17 16:01 +0200
csiph-web