[issue39637] Probably incorrect message after failed import
Steven D'Aprano
report at bugs.python.org
Sat Feb 15 07:08:27 EST 2020
Steven D'Aprano <steve+python at 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 <report at bugs.python.org>
<https://bugs.python.org/issue39637>
_______________________________________
More information about the Python-bugs-list
mailing list