I don’t know of an easy way. A Python distribution (i.e. something that was installed, like Django 1.3) can have zero or more Python modules, zero or more Python packages (i.e. modules that have submodules, not what other tools call packages), zero or more scripts, zero or more data files. If you installed with pip or easy_install, metadata files are written in the egg-info directories/files/zipped directories, so a tool could walk these files to display what modules or packages were installed for a distribution, but I don’t know any tool that does that.
yolk and pip freeze will only list distributions (even if they call them packages), to let you know what version are installed, and then you can upgrade or uninstall them.
Inspecting sys.modules only gives info about modules imported during the current Python session.
So to know what modules are importable on your system after installing distributions, you have to resort to crude inspection of site-packages and similar directories, or write some code to walk over packaging metadata files and extract modules. This won’t work for distributions installed with pure distutils.
This is clearly imperfect and confusing; we’re still working on Python packaging.
BTW, can I ask what is the use case for your question? Typically you install one distribution to do something with it, and the same documentation that tells you what to install will tell you what to import.
from distutils.sysconfig import get_python_lib; print(get_python_lib())
now that Python 2 is unsupported. – nealmcb