[Python-ideas] Calling python from C completely statically

Barry barry at barrys-emacs.org
Tue Jul 10 15:45:55 EDT 2018



> On 10 Jul 2018, at 19:12, Alberto Garcia <agarciaillera at gmail.com> wrote:
> 
> Thank you Barry,
> 
> but I see that the the way yo do it is dropping files to disk. I want to prevent any file to touch the disk except for the actual binary that has everything embedded in it.

What file are you refering to? The zip is built onto the elf/exe.

BTW this is all off topic for python ideas. You might want to take this offline.


Barry

> 
> Cheers
> 
>> On Tue, Jul 10, 2018 at 10:25 AM Barry <barry at barrys-emacs.org> wrote:
>> 
>> 
>>> On 9 Jul 2018, at 21:11, Alberto Garcia <agarciaillera at gmail.com> wrote:
>>> 
>>> Hi,
>>> 
>>> thank you for your response. I've downloaded the sources but I couldn't find any documentation. In addition I see that there is not a single C/C++ file. What I want to do is calling python from C.
>>> Am I missing something?
>> 
>> You need to grab the sources with an svn checkout. I guess you grabbed the binary kit.
>> 
>> https://sourceforge.net/p/meinc-installer/code/HEAD/tree/trunk/MEINC_Installer/
>> 
>> Docs are in here.
>> 
>> https://sourceforge.net/p/meinc-installer/code/HEAD/tree/trunk/MEINC_Installer/Installer/doc/
>> 
>> Barry
>> 
>>> Cheers
>>> 
>>> 
>>>> On Mon, Jul 9, 2018 at 12:20 PM Barry Scott <barry at barrys-emacs.org> wrote:
>>>> 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> wrote:
>>>>>> Ohhhhhhhh  I guess you mean this:
>>>>>> 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> 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> wrote:
>>>>>>>> On 9 July 2018 at 03:10, Alberto Garcia <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   |   Brisbane, Australia
>>>>>>> -- 
>>>>>>> Alberto García Illera
>>>>>>> 
>>>>>>> GPG Public Key: https://goo.gl/twKUUv
>>>>>> -- 
>>>>>> Alberto García Illera
>>>>>> 
>>>>>> GPG Public Key: https://goo.gl/twKUUv
>>>>> 
>>>>> 
>>>>> -- 
>>>>> Alberto García Illera
>>>>> 
>>>>> GPG Public Key: https://goo.gl/twKUUv
>>>>> _______________________________________________
>>>>> Python-ideas mailing list
>>>>> Python-ideas at python.org
>>>>> https://mail.python.org/mailman/listinfo/python-ideas
>>>>> Code of Conduct: http://python.org/psf/codeofconduct/
>>>> 
>>> 
>>> 
>>> -- 
>>> Alberto García Illera
>>> 
>>> GPG Public Key: https://goo.gl/twKUUv
> 
> 
> -- 
> Alberto García Illera
> 
> GPG Public Key: https://goo.gl/twKUUv
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180710/b125c2df/attachment-0001.html>


More information about the Python-ideas mailing list