Page 1 of 1

Python file can't import another py file

Posted: Mon Aug 05, 2019 3:41 am
by tim3385
I embed javascript port into my emscripten application. mp_js_do_str works fine in my c code.
And that pyexec_file invoke a python file is fine too. i.e. upy works in web application. But The python file can't "import" another module which is also a python file in the same directory.
I test it in emscripten MEMFS root directory "/".

This is the gist below(Sorry, I don't know how to insert text as code in this forum):
FILE* fp = NULL;
fp = fopen("", "w");
fprintf(fp, "import woxiao\nwoxiao.HUDPrint(\"print by\")\n");

fp = fopen("", "w");
//fprintf(fp, "import woxiao\nwoxiao.HUDPrint(\"print by\")\ntry:\nimport t2\nwoxiao.HUDPrint(\"+ import t2 done\")\npass\nexcept ImportError:\nwoxiao.HUDPrint(\"- import t2 failed\")\n");
fprintf(fp, "import woxiao\nwoxiao.HUDPrint(\"print by\")\nimport t2\n");

//pyexec_file (""); //works fine
pyexec_file (""); // can't import t2
ps. "woxiao.HUDPrint" is just a debug print function in my own "woxiao" module which is extended in my C code. And it works fine.

Re: Python file can't import another py file

Posted: Thu Nov 07, 2019 4:17 pm
by tim3385
Importing py files in WASM works. But I am not sure if my method is correct. Here's what I did:
1)mp_lexer_new_from_file() in lexer.c was enabled by set "#define MICROPY_READER_POSIX (1)" in ports/javascript/mpconfigport.h. And comment the mp_lexer_new_from_file() define in the ports/javascript/main.c.
2)Copy the implementation of mp_import_stat from ports/unix/main.c into javascript's.
ps. I use upy 1.11.