Using the `spam.eggs` syntax for modules only works if spam is a package and eggs is a sub-package or module. For example, this fails:
py> import glob.fnmatch Traceback (most recent call last): File "<frozen importlib._bootstrap>", line 1516, in _find_and_load_unlocked AttributeError: 'module' object has no attribute '__path__' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'glob.fnmatch'; glob is not a package even though fnmatch is a module in glob's namespace: py> import glob py> glob.fnmatch <module 'fnmatch' from '/usr/local/lib/python3.3/fnmatch.py'> On the other hand, if you have a proper package, it works: py> import collections.abc py> collections.__package__ 'collections' But bizarrely, you can import os.path this way! py> import os.path py> os.path <module 'posixpath' from '/usr/local/lib/python3.3/posixpath.py'> py> os.__package__ '' By what wizardry does this work? -- Steve -- https://mail.python.org/mailman/listinfo/python-list