4
\$\begingroup\$

In the following script, I am trying to infer if the modules are managed by a conda environment or not and based on that, I am trying to auto install and import the modules. [I skipped around 5 to 6 imports to keep it short for the sake of this example].

It would be great if someone can give me some pointers if I have made any mistakes in my following code.

import importlib
import os
import subprocess
import sys


def package_install(package, is_conda):
    """ Installs missing modules. """
    install_env = "conda" if is_conda else "pip"
    conda_call = [install_env, "install", "-y", package]
    pip_call = [sys.executable, "-m", install_env, "install", package]
    install_call = conda_call if is_conda else pip_call

    try:
        subprocess.call(install_call)
    except Exception as err:
        print(f'Unable to install the module using {install_env}:\n{repr(err)}')


# Check if the packages are managed with conda environment
is_conda = os.path.exists(os.path.join(sys.prefix, 'conda-meta'))

try:
    import matplotlib as plt
except ImportError:
    package_install("matplotlib", is_conda)
    plt = importlib.import_module("matplotlib")
try:
    import descartes as des
except ImportError:
    package_install("descartes", is_conda)
    des = importlib.import_module("descartes")
\$\endgroup\$

0

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.