[Python-ideas] Calling python from C completely statically

Barry Scott barry at barrys-emacs.org
Mon Jul 9 15:20:15 EDT 2018


I think you might find Gordon McMillian's installer interesting to look at. It has a lot
f the tech that I think you are looking for.

Works up to python 2.7. I ended up taking over when Gordon stopped maintaining
it and kept it going up to python 2.7. In principle the same ideas could be made to
work in python 3 I believe.

	https://sourceforge.net/projects/meinc-installer/

The zip file is appended to the end of the .EXE or unix ELF fie.
The boot strap knows how to import form the ZIP at the end of
the binary.

It also has a way to split out the .SO/.DLL files from the ZIP and
allow them to be loaded. Single EXE mode.

There are docs that explain how it works in the sources.

Barry



> On 9 Jul 2018, at 19:40, Alberto Garcia <agarciaillera at gmail.com> wrote:
> 
> Does the zip need to reside in disk to be loaded. Or can it be loaded from memory? I don't want it to be loaded from disk but from Memory
> 
> 
> 
> On Mon, Jul 9, 2018 at 9:59 AM Alberto Garcia <agarciaillera at gmail.com <mailto:agarciaillera at gmail.com>> wrote:
> Ohhhhhhhh  I guess you mean this:
> https://github.com/anthony-tuininga/cx_Freeze/blob/master/source/bases/Common.c <https://github.com/anthony-tuininga/cx_Freeze/blob/master/source/bases/Common.c>
> Right?
> 
> On Mon, Jul 9, 2018 at 9:48 AM Alberto Garcia <agarciaillera at gmail.com <mailto:agarciaillera at gmail.com>> wrote:
> Thank you for your response,
> 
> I was thinking on creating that zip file with the content of the Lib folder and having my c code to download it over the network and have it in memory. 
> I guess that the zip file should have no compression at all right?
> 
> When you say that I need to use the cx_freeze approach what do you mean? Can you point me to where they do that? 
> 
> And why changing sys.path again to the executable again? Which part of the executable? 
> 
> I'll put my efforts in this.
> 
> Thank you 
> 
> On Mon, Jul 9, 2018 at 7:16 AM Nick Coghlan <ncoghlan at gmail.com <mailto:ncoghlan at gmail.com>> wrote:
> On 9 July 2018 at 03:10, Alberto Garcia <agarciaillera at gmail.com <mailto:agarciaillera at gmail.com>> wrote:
> > Hey there,
> >
> > Yes, the part of having the pyd modules built in in library is already done.
> > I followed the instructions in the README. What I would like to know now is
> > how to embed the non frozen python (py) modules. Can you guys please point
> > me in the right direction.
> 
> The gist is to:
> 
> 1. take the entire Lib directory and put it in a zip archive
> 2. use the approach demonstrated in cx_freeze to point sys.path in
> your static executable at that zip archive
> 3. adjust your C code to point sys.path back at the executable itself,
> and then combine your executable and the zip archive into a single
> contiguous file (similar to what zipapp does with it's helper script
> and app archive)
> 
> There are likely to still be rough edges when doing that, since this
> isn't a well tested configuration. When all else fails, find the part
> of the source code responsible for any error messages you're seeing,
> and try to work out if there's a setting you can tweak to avoid
> hitting that code path.
> 
> Cheers,
> Nick.
> 
> -- 
> Nick Coghlan   |   ncoghlan at gmail.com <mailto:ncoghlan at gmail.com>   |   Brisbane, Australia
> -- 
> Alberto García Illera
> 
> GPG Public Key: https://goo.gl/twKUUv <https://goo.gl/twKUUv>-- 
> Alberto García Illera
> 
> GPG Public Key: https://goo.gl/twKUUv <https://goo.gl/twKUUv>
> 
> -- 
> Alberto García Illera
> 
> GPG Public Key: https://goo.gl/twKUUv <https://goo.gl/twKUUv>_______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org <mailto:Python-ideas at python.org>
> https://mail.python.org/mailman/listinfo/python-ideas <https://mail.python.org/mailman/listinfo/python-ideas>
> Code of Conduct: http://python.org/psf/codeofconduct/ <http://python.org/psf/codeofconduct/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180709/079fd448/attachment-0001.html>


More information about the Python-ideas mailing list