Steven D'Aprano <steve+pyt...@pearwood.info> 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 <rep...@bugs.python.org> <https://bugs.python.org/issue39637> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com