ocaml_python_bindgen icon indicating copy to clipboard operation
ocaml_python_bindgen copied to clipboard

embedding more than one python file

Open UnixJunkie opened this issue 1 year ago • 5 comments

Just an idea. Currently, I have one python file that I write to interface w/ ocaml (let's call it itf.py). I.e. the ocaml side only calls functions defined in this file. However, this said file may rely on other python files in the same directory to implement complex things.

It would be nice if we can embed in some way those other files too.

Currently, I had to include by hand the other files into itf.py. But, I hate to do this, I just duplicated code, if there are some bugs, I will need to correct in two places from now on.

Do you understand my need?

Would it be doable?

I ~could~ (should?) create a python library containing all those other files. But then, the ocaml exe will rely on this library to be installed at runtime. In terms of deployment, it would be nicer is the ocaml exe can embed everything needed (i.e. itf.py plus all its required python files dependencies).

UnixJunkie avatar May 12 '23 10:05 UnixJunkie

This is a sort of hacky solution, but do you know about stickytape? It is a script that allows you to "rollup" all the imported modules of your python program into a single mega script. Then you (I think) should probably be able to use the mega-script as your interface instead of your original interface.

mooreryan avatar May 14 '23 04:05 mooreryan

Check this example out: https://github.com/mooreryan/pyml_bindgen_stickytape_example

The executable that it generates is movable...it works on my computer from any directory, and even if I move it on to a different server, without having to mess around with the PYTHONPATH or anything.

mooreryan avatar May 14 '23 05:05 mooreryan

Ok, very interesting. No, I did not know about this. It might do the trick.

On Sun, May 14, 2023 at 2:49 PM Ryan Moore @.***> wrote:

Check this example out: https://github.com/mooreryan/pyml_bindgen_stickytape_example

The executable that it generates is movable...it works on my computer from any directory, and on a different server, without having to mess around with the PYTHONPATH or anything.

— Reply to this email directly, view it on GitHub https://github.com/mooreryan/ocaml_python_bindgen/issues/10#issuecomment-1546814197, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFUFAA3EWQA634SN5O3OGTXGBW6TANCNFSM6AAAAAAX7KHPJA . You are receiving this because you authored the thread.Message ID: @.***>

UnixJunkie avatar May 14 '23 11:05 UnixJunkie

I consider this question has been properly answered. I will try soon the proposed solution.

UnixJunkie avatar May 17 '23 07:05 UnixJunkie

I think, this suggestion is great, but I will just use the unix cat command and achieve the same effect in my gen_bindings.sh which invokes pyml_bindgen. :)

UnixJunkie avatar May 17 '23 09:05 UnixJunkie