Whats the difference between a module and a library in Python?

Only package and module have a well-defined meaning specific to Python.

  1. An API is not a collection of code per se - it is more like a "protocol" specification how various parts (usually libraries) communicate with each other. There are a few notable "standard" APIs in python. E.g. the DB API

  2. In my opinion, a library is anything that is not an application - in python, a library is a module - usually with submodules. The scope of a library is quite variable - for example the python standard library is vast (with quite a few submodules) while there are lots of single purpose libraries in the PyPi, e.g. a backport of collections.OrderedDict for py < 2.7

  3. A package is a collection of python modules under a common namespace. In practice one is created by placing multiple python modules in a directory with a special __init__.py module (file).

  4. A module is a single file of python code that is meant to be imported. This is a bit of a simplification since in practice quite a few modules detect when they are run as script and do something special in that case.

  5. A script is a single file of python code that is meant to be executed as the 'main' program.

  6. If you have a set of code that spans multiple files, you probably have an application instead of script.


From The Python Tutorial - Modules

  • Module:

    A module is a file containing Python definitions and statements. The file name is the module name with the suffix .py appended.

  • Package:

    Packages are a way of structuring Python’s module namespace by using “dotted module names”.

If you read the documentation for the import statement gives more details, for example:

Python has only one type of module object, and all modules are of this type, regardless of whether the module is implemented in Python, C, or something else. To help organize modules and provide a naming hierarchy, Python has a concept of packages.

You can think of packages as the directories on a file system and modules as files within directories, but don’t take this analogy too literally since packages and modules need not originate from the file system. For the purposes of this documentation, we’ll use this convenient analogy of directories and files. Like file system directories, packages are organized hierarchically, and packages may themselves contain subpackages, as well as regular modules.

It’s important to keep in mind that all packages are modules, but not all modules are packages. Or put another way, packages are just a special kind of module. Specifically, any module that contains a __path__ attribute is considered a package.

Hence the term module refers to a specific entity: it's a class whose instances are the module objects you use in python programs. It is also used, by analogy, to refer to the file in the file system from which these instances "are created".

The term script is used to refer to a module whose aim is to be executed. It has the same meaning as "program" or "application", but it is usually used to describe simple and small programs(i.e. a single file with at most some hundreds of lines). Writing a script takes minutes or few hours.

The term library is simply a generic term for a bunch of code that was designed with the aim of being usable by many applications. It provides some generic functionality that can be used by specific applications.

When a module/package/something else is "published" people often refer to it as a library. Often libraries contain a package or multiple related packages, but it could be even a single module.

Libraries usually do not provide any specific functionality, i.e. you cannot "run a library".

The API can have different meanings depending on the context. For example:

  • it can define a protocol like the DB API or the buffer protocol.
  • it can define how to interact with an application(e.g. the Python/C API)
  • when related to a library/package it simply the interface provided by that library for its functionality(set of functions/classes/constants etc.)

In any case an API is not python code. It's a description which may be more or less formal.


Library : It is a collection of modules.

(Library either contains built in modules(written in C) + modules written in python).

Module : Each of a set of standardized parts or independent units that can be used to construct a more complex structure.

Speaking in informal language, A module is set of lines of code which are used for a specific purpose and can be used in other programs as it is , to avoid DRY(Don’t Repeat Yourself) as a team and focusing on main requirement. source

API is an interface for other applications to interact with your library without having direct access.

Package is basically a directory with files.

Script means series of commands within a single file.