Steven D'Aprano <[email protected]> added the comment:
> Shouldn't that say that "'environ' is not a package" instead?
No. The os module is special, so I'll talk about the usual case first.
Normally, for `import spam.eggs` to succeed, *spam* has to be a package, and
*eggs* has to be either a sub-module inside that package, or a sub-package. So
the general error message is correct. You can't normally use the dotted import
syntax to import functions from a module.
But the `os` module is special: it is very old, pre-dating the invention of
packages, and the `os` module fakes a pretend package for `os.path` by doing
this:
sys.modules['os.path'] = path
So even though `os` is not a package, you can still use dotted package syntax
to import `os.path`.
I guess this was intended as a convenience, without considering how this could
be confusing.
----------
nosy: +steven.daprano
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue39637>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com