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?
EDIT – 2020/02/03
The pip
module has updated quite a lot since the time I posted this answer. Ive 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 sys
import subprocess
import pkg_resources
required = {mutagen, gTTS}
installed = {pkg.key for pkg in pkg_resources.working_set}
missing = required - installed
if 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.
you can use simple try/except:
try:
import mutagen
print(module mutagen is installed)
except ModuleNotFoundError:
print(module mutagen is not installed)
# or
install(mutagen) # the install function from the question
How to check if a module is installed in Python and, if not, install it within the code?
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.