So far, this chapter has presented modules as files containing Python code. However, modules loaded with import really fall into four general categories:
Code written in Python (.py files)
C or C++ extensions that have been compiled into shared libraries or DLLs
Packages containing a collection of modules
Built-in modules written in C and linked into the Python interpreter
When looking for a module (for example, foo), the interpreter searches each of the directories in sys.path for the following files (listed in search order):
A directory, foo, defining a package.
foo.so, foomodule.so, foomodule.sl, or foomodule.dll (compiled extensions).
foo.pyo (only if the -O or -OO option has been used).
foo.py. (On Windows, ...