There are times that we need to import some python module and, for whatever reasons, we will not know the name of the module until run-time. This can be achieved by built-in function __import__().
Dynamic loading python module is useful, for example, if we plan to read configuration from a file. Here is an example that allows us to load the module specified in sys.argv[1]:
config_file = sys.argv[1]
config = __import__(config_file)
For newer versions (2.7 and up), there are convenience wrappers for __import__(). We may use module importlib:
import importlib
config_file = sys.argv[1]
config = importlib.import_module(config_file)
Both __import__() and importlib.import_module() search modules in certain locations (e.g., sys.modules, sys.meta_path, sys.path). There are times that modules being loaded are not in those default locations. This can be achieved by using imp.load_source(), which allows us to load and initialize modules implemented as Python source files:
import imp
pathname = sys.argv[1]
config = imp.load_source(name, pathname)
where pathname is the path name of the configuration file.
No comments:
Post a Comment