I would like to install the modules 'mutagen' and 'gTTS' for my code, but I want to have it so it will install the modules on every computer that doesn't have them, but it won't try to install them if they're already installed. I currently have:
def install[package]:
pip.main[['install', package]]
install['mutagen']
install['gTTS']
from gtts import gTTS
from mutagen.mp3 import MP3
However, if you already have the modules, this will just add unnecessary clutter to the start of the program whenever you open it.
asked May 26, 2017 at 22:00
FoxesFoxes
9572 gold badges9 silver badges17 bronze badges
4
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 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.
answered May 26, 2017 at 22:07
GirrafishGirrafish
2,0101 gold badge18 silver badges30 bronze badges
14
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
answered Jul 10, 2020 at 15:05
matan hmatan h
7881 gold badge8 silver badges17 bronze badges
If you want to know if a package is installed, you can check it in your terminal using the following command:
pip list | grep
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
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.
karel
4,85342 gold badges42 silver badges48 bronze badges
answered Mar 16, 2019 at 8:29
jackjack
2873 silver badges3 bronze badges
3
You can check if a package is installed using pkg_resources.get_distribution
:
import pkg_resources
for package in ['mutagen', 'gTTS']:
try:
dist = pkg_resources.get_distribution[package]
print['{} [{}] is installed'.format[dist.key, dist.version]]
except pkg_resources.DistributionNotFound:
print['{} is NOT installed'.format[package]]
Note: You should not be directly importing the pip
module as it is an unsupported
use-case of the pip
command.
The recommended way of using pip
from your program is to execute it using subprocess
:
subprocess.check_call[[sys.executable, '-m', 'pip', 'install', 'my_package']]
answered Feb 2, 2020 at 18:59
dcolesdcoles
3,5252 gold badges27 silver badges22 bronze badges
1
Although @girrafish's answer might suffice, you can check
package installation via importlib
too:
import importlib
packages = ['mutagen', 'gTTS']
[subprocess.check_call[['pip', 'install', pkg]]
for pkg in packages if not importlib.util.find_spec[pkg]]
answered Nov 14, 2021 at 17:23
Shayan AmaniShayan Amani
5,2811 gold badge36 silver badges36 bronze badges
1
You can use the command line :
python -m MyModule
it will say if the module exists
Else you can simply use the best practice :
pip freeze > requirements.txt
That will put the modules you've on you python installation in a file
and :
pip install -r requirements.txt
to load them
It will automatically you purposes
Have fun
answered May 26, 2017 at 22:05
D. PeterD. Peter
4873 silver badges12 bronze badges
Another solution it to put an import statement for whatever you're trying to import into a try/except block, so if it works it's installed, but if not it'll throw the exception and you can run the command to install it.
answered May 26, 2017 at 22:42
Joseph LongJoseph Long
1831 gold badge2 silver badges10 bronze badges
If you would like to preview if a specific package [or some] are installed or not maybe you can use the idle in python. Specifically :
- Open IDLE
- Browse to File > Open Module > Some Module
- IDLE will either display the module or will prompt an error message.
Above is tested with python 3.9.0
answered Jan 13, 2021 at 4:18
1
You can run pip show package_name
or for broad view use pip list
Reference
answered Jun 15, 2021 at 16:59