DEV Community

Cover image for Introduction to Python Modules and Libraries
≀Paulo Portela
≀Paulo Portela

Posted on • Edited on

Introduction to Python Modules and Libraries

In this chapter, we'll learn how to manage Python modules and libraries. We'll see how to import them, use their functions, and keep them up to date. We'll also provide code examples with output to illustrate the concepts.

First, let's talk about how to import modules and libraries in Python. There are several ways to do this, but the most common way is to use the import statement. For example, to import the math module, which provides a variety of mathematical functions and constants, we can use the following code:

import math
Enter fullscreen mode Exit fullscreen mode

Once we have imported a module, we can use its functions and constants by prefixing them with the module name and a dot. For example, to use the sqrt function from the math module, which calculates the square root of a number, we can use the following code:

import math

x = 16
result = math.sqrt(x)
print(result)
Enter fullscreen mode Exit fullscreen mode
Output:
4.0
Enter fullscreen mode Exit fullscreen mode

This code will output 4.0, which is the square root of 16.

Another way to import a module is to use the from ... import ... statement. This allows us to import specific functions or constants from a module, rather than importing the entire module. For example, to import only the sqrt function from the math module, we can use the following code:

from math import sqrt

x = 16
result = sqrt(x)
print(result)
Enter fullscreen mode Exit fullscreen mode
Output:
4.0
Enter fullscreen mode Exit fullscreen mode

This code will also output 4.0, just like the previous example. However, since we have imported only the sqrt function, we can use it directly without prefixing it with the module name.

We can also use the as keyword to give a module or a function a different name when we import it. This can be useful if the name of the module or function conflicts with another name in our code, or if we want to use a shorter or more descriptive name. For example, to import the math module and give it the name m, we can use the following code:

import math as m

x = 16
result = m.sqrt(x)
print(result)
Enter fullscreen mode Exit fullscreen mode
Output:
4.0
Enter fullscreen mode Exit fullscreen mode

This code will also output 4.0, just like the previous examples. However, since we have imported the math module with the name m, we can use the sqrt function by prefixing it with m instead of math.

Python provides several built-in functions that can be useful for working with modules and libraries. One of these functions is the help function, which can be used to get information about a module, a function, or any other object. For example, to get information about the math module, we can use the following code:

import math

help(math)
Enter fullscreen mode Exit fullscreen mode
Output:
Help on built-in module math:

NAME
    math

DESCRIPTION
    This module provides access to the mathematical functions
    defined by the C standard.
...
Enter fullscreen mode Exit fullscreen mode

This code will output a lot of information about the math module, including a list of all the functions and constants it provides, and a description of what each of them does.

Another useful built-in function is the dir function, which can be used to get a list of all the names defined by a module. For example, to get a list of all the names defined by the math module, we can use the following code:

import math

print(dir(math))
Enter fullscreen mode Exit fullscreen mode
Output:
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'cbrt', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'exp2', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'sumprod', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
Enter fullscreen mode Exit fullscreen mode

This code will output a list of all the names defined by the math module, including all the functions and constants it provides.

Python provides several ways to get information about the packages installed on our system. One way to do this is to use the importlib module and its metadata submodule. For example, to get a list of all the packages installed on our system, we can use the following code:

from importlib import metadata

print(metadata.packages_distributions())
Enter fullscreen mode Exit fullscreen mode
Output:
{'annotated_types': ['annotated-types'], 'bcrypt': ['bcrypt'], 'certifi': ['certifi'], ..., 'wrapt': ['wrapt']}
Enter fullscreen mode Exit fullscreen mode

This code will output a list of all the packages installed on our system.

Another way to get information about the packages installed on our system is to use the pkg_resources module, which is part of the setuptools package. For example, to get a list of all the packages installed on our system, we can use the following code:

import pkg_resources

print([p.project_name for p in pkg_resources.working_set])
Enter fullscreen mode Exit fullscreen mode

This code will also output a list of all the packages installed on our system.

Python provides a way to get information about all the modules available on our system, even if they are not installed. We can do this by using the help function with the argument "modules". For example, to get a list of all the modules available on our system, we can use the following code:

help("modules")
Enter fullscreen mode Exit fullscreen mode
Output:
PIL
__future__
__hello__
...
Enter fullscreen mode Exit fullscreen mode

This code will output a list of all the modules available on our system, including both built-in modules and modules that can be installed from external sources.

Python provides several ways to manage the packages installed on our system. One way to do this is to use the subprocess module to run commands that can install or upgrade packages. For example, to install or upgrade a list of packages, we can use the following code:

import subprocess

packages = ["numpy", "scipy", "matplotlib"]
subprocess.check_call(["python", "-m", "pip", "install", "--upgrade"] + packages)
Enter fullscreen mode Exit fullscreen mode
Output:
Collecting numpy
  Downloading numpy
...
Enter fullscreen mode Exit fullscreen mode

This code will install or upgrade the numpy, scipy, and matplotlib packages, which are commonly used for mathematical calculations and data visualization.

We can also use the pip module to get information about outdated packages. For example, to get a list of all the outdated packages on our system, we can use the following code:

import subprocess

result = subprocess.check_output(["pip", "list", "--outdated"])
outdated_packages = result.decode(encoding="utf-8")
print(outdated_packages)
Enter fullscreen mode Exit fullscreen mode
Output:
Package       Version      Latest   Type
------------- ------------ -------- -----
certifi       2023.11.17   2024.2.2 wheel
cryptography  42.0.1       42.0.4   wheel
...
Enter fullscreen mode Exit fullscreen mode

This code will output a list of all the outdated packages on our system, which we can then upgrade using the subprocess module, as shown in the previous example.

We can get the version of pip package using the importlib.metadata module:

from importlib.metadata import version

pip_version = version(distribution_name="pip")
print(pip_version)
Enter fullscreen mode Exit fullscreen mode
Output:
23.3.2
Enter fullscreen mode Exit fullscreen mode

This code will output the version of the pip package installed on your system.

We can also use the distribution function from the importlib.metadata module to get more information about a package. For example, to get information about the pip package, you can use the following code:

from importlib.metadata import distribution

pip_distribution = distribution(distribution_name="pip")
print(pip_distribution.metadata)
Enter fullscreen mode Exit fullscreen mode
Output:
Metadata-Version: 2.1
Name: pip
Version: 23.3.2
Summary: The PyPA recommended tool for installing Python packages.
...
Enter fullscreen mode Exit fullscreen mode

This code will output the metadata of the pip package, which includes information such as the package's name, version, author, and more.

In addition to using the subprocess module to manage packages, we can also use the command line to perform these tasks. The command line provides a powerful and flexible way to manage the packages installed on our system. By using the pip command, we can easily install, upgrade, and manage the packages we need. For example, to get a list of outdated packages, we can use the pip list --outdated command:

pip list --outdated
Enter fullscreen mode Exit fullscreen mode

This command will output a list of all the outdated packages on your system, which you can then upgrade using the pip install [package] --upgrade command. For example, to upgrade the numpy package, you can use the following command:

pip install numpy --upgrade
Enter fullscreen mode Exit fullscreen mode

This command will upgrade the numpy package to the latest version available.

We can also use the pip install command to install new packages. For example, to install the scipy package, we can use the following command:

pip install scipy
Enter fullscreen mode Exit fullscreen mode

This command will install the scipy package on your system.
If we have a list of packages that we want to install or upgrade, we can save this list to a text file, and then use the pip install -r requirements.txt command to install or upgrade all the packages listed in the file. For example, if we have a file named requirements.txt with the following content:

numpy
scipy
matplotlib
Enter fullscreen mode Exit fullscreen mode

We can use the following command to install or upgrade all the packages listed in the file:

pip install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode

This command will install or upgrade the numpy, scipy, and matplotlib packages, which are commonly used for mathematical calculations and data visualization.

Conclusion

In summary, Python provides a rich set of modules and libraries, as well as several ways to manage the packages installed on our system. By using these tools, we can easily perform complex operations and keep our system up to date with the latest packages.

Top comments (0)