Skip to content

Instantly share code, notes, and snippets.

@skshetry
Last active March 2, 2018 09:29
Show Gist options
  • Save skshetry/fe95098e0d2f58f2c9ef84c7048b7229 to your computer and use it in GitHub Desktop.
Save skshetry/fe95098e0d2f58f2c9ef84c7048b7229 to your computer and use it in GitHub Desktop.
def import_these(*pkg_args):
    return [import_this(pkg_str) for pkg_str in pkg_args]

def import_this(pkg_str: str):
    import importlib
    try:
        return importlib.import_module(pkg_str)
    except ModuleNotFoundError:
        print(f"The '{pkg_str}' module wasn't found."
              "Probably, it's not installed or it may not be in the path.")
        raise
    except AttributeError:
        print("Only strings are supported for import."
              f"'{type(pkg_str).__name__}' isn't supported.")
        raise
  1. Importing a single module
pathlib = import_this('pathlib')

Similar to

import pathlib
  1. Importing a module from package
keras_datasets = import_these('keras' '.' 'datasets')

Similar to

from keras import datasets as keras_datasets
  1. Importing multiple packages/modules
keras, sklearn, np, pd, pplot = import_these('keras', 'sklearn', 'numpy', 'pandas', 'matplotlib.pyplot')

Similar to:

 import keras
 import sklearn
 import numpy as np
 import pandas as pd
 from matplotlib import pyplot as pplot
  1. Oops, I don't need all at present.
keras, _, np, pd, plot = import_these('keras', 'sklearn', 'numpy', 'pandas', 'matplotlib.pyplot')

Similar to not importing at all. :P

  1. Importing from a tuple/list of to be imported packages/modules
to_import = ['sys', 'time', 'os', 'pprint']
sys, time, os, pprint = import_these(*to_import)
pprint

Similar to

import sys, time, os, pprint
  1. Importing from a string separated by space
to_import = 'sys time os pprint'.split(' ')
import_these(*to_import)

Similar to

import sys, time, os, pprint

But, 5 and 6 are a lot powerful. You can import dynamicallly (even from user's input).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment