mirror of
https://github.com/python/cpython.git
synced 2025-10-23 23:22:11 +00:00
Relative imports use resolve_name to get the absolute target name, which first seeks the current module's absolute package name from the globals: If __package__ (and __spec__.parent) are missing then import uses __name__, truncating the last segment if the module is a submodule rather than a package __init__.py (which it guesses from whether __path__ is defined). The __name__ attempt should fail if there is no parent package (top level modules), if __name__ is '__main__' (-m entry points), or both (scripts). That is, if both __name__ has no subcomponents and the module does not seem to be a package __init__ module then import should fail. |
||
|---|---|---|
| .. | ||
| data | ||
| __init__.py | ||
| __main__.py | ||