Description
Example:
- Add a frozen module to unix/windows port.
- At the repl:
import mymodule # works
- create demo.py containing
import mymodule
Run
$ ./micropython ~/mpy/demo.py
Traceback (most recent call last):
File "/home/jimmo/mpy/demo.py", line 5, in <module>
ImportError: no module named 'mymodule'
The underlying issue here is that the unix port, when running normally has sys.path=["", "~/.micropython/lib:/usr/lib/micropython"]
, and when running with a path to /path/to/demo.py has sys.path=["/path/to", "~/.micropython/lib:/usr/lib/micropython"]
When import mymodule
is executed, it's trying to load mp_frozen_stat("/path/to/mymodule")
, but the frozen module is just named "mymodule".
I'm not sure if the fix here is to improve the frozen module matching (i.e. assume that all frozen modules are in all sys.paths), or to always have "" as the final entry in sys.path? Or something else? Need to consider how thiss interact with the behavior where filesystem modules override frozen modules of the same name.
This came from the forum: https://forum.micropython.org/viewtopic.php?f=12&t=8995&p=50840#p50840