How to check if a module is installed in Python and, if not, install it within the code? How to check if a module is installed in Python and, if not, install it within the code? python-3.x python-3.x

How to check if a module is installed in Python and, if not, install it within the code?


EDIT - 2020/02/03

The pip module has updated quite a lot since the time I posted this answer. I've updated the snippet with the proper way to install a missing dependency, which is to use subprocess and pkg_resources, and not pip.

To hide the output, you can redirect the subprocess output to devnull:

import sysimport subprocessimport pkg_resourcesrequired = {'mutagen', 'gTTS'}installed = {pkg.key for pkg in pkg_resources.working_set}missing = required - installedif missing:    python = sys.executable    subprocess.check_call([python, '-m', 'pip', 'install', *missing], stdout=subprocess.DEVNULL)

Like @zwer mentioned, the above works, although it is not seen as a proper way of packaging your project. To look at this in better depth, read the the page How to package a Python App.


If you want to know if a package is installed, you can check it in your terminal using the following command:

pip list | grep <module_name_you_want_to_check>

How this works:

pip list

lists all modules installed in your Python.

The vertical bar | is commonly referred to as a "pipe". It is used to pipe one command into another. That is, it directs the output from the first command into the input for the second command.

grep <module_name_you_want_to_check>

finds the keyword from the list.

Example:

pip list| grep quant

Lists all packages which start with "quant" (for example "quantstrats"). If you do not have any output, this means the library is not installed.


you can use try/except:

try:    import time    print("module 'time' is installed")except ModuleNotFoundError:    print("module 'time' is not installed")    # or    install("time") # the install function from the question