8000 unix: sys.path affects loading of frozen modules · Issue #6419 · micropython/micropython · GitHub
[go: up one dir, main page]

Skip to content
unix: sys.path affects loading of frozen modules #6419
Closed
@jimmo

Description

@jimmo

Example:

  1. Add a frozen module to unix/windows port.
  2. At the repl:
import mymodule # works
  1. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0