When you import a package, only the top level of it is imported(its __init__.py).
So in general case, you won't be able to say import package and use the package.module module inside it.
Also, if you import package.module, you won't be able to use the stuff from the package namespace.
os and os.path are a bit of a special case.
It lookes like os is a package, and os.path is a module within it.
But that's not the case.
os actually just does some magic that makes it seem like os.path is a part of it.
It's actually a platform-specific module that gets imported inside os, and magic-ed the shit out of.
Whether you import os or os.path, both will be available to you.
However, I would recommend using import os if you're using stuff from the os namespace, and import os.path if you're using stuff from os.path namespace.
You know - explicitness, clarity and stuff like that.
Friendship is magic!
R.I.P. Tracy M. You will be missed.