Problem Formulation and Solution Overview
As a Python Coder, you will encounter times when you need to view a list of all imported modules possessing a global or local scope. This article answers the question below.
Method 1: Use pip freeze
This method displays a list of all imported global module names and versions sorted, by default, in alphabetical order.
pip freeze
Navigate to the terminal window from an IDE and enter the above command. Then, hit the <Enter
> key to execute. The output is sent to the terminal.
π‘ Note: Your prompt may be different from the example shown above.
Output (snippet)
Your imported global module names and versions may differ from that shown below.
absl-py==1.0.0 |
Method 2: Use List Comprehension
This example uses the sys
library with List Comprenehsion to return all imported local module names, by default, in an unsorted list.
import sys results = [m.__name__ for m in sys.modules.values() if m] results = sorted(results) print(results)
This code loops through sys.modules.values()
using __name__
(aka a dunder) and determines if the item is a locally scoped module. If so, the module name saves to results
.
This code sorts the results
variable and saves it back to itself for readability. These results
are output to the terminal in list format.
Output (snippet)
Your imported local module names may differ from that shown below.
['main', '_abc', '_codecs', '_collections', '_distutils_hack', '_functools', '_imp', '_operator', '_signal', '_sitebuiltins', '_stat', '_thread', '_warnings', '_weakref', 'abc',...'zope'] |
Method 3: Use dir()
This example uses the dir()
function to return all local module names in a sorted list format.
modules = dir() print(modules)
The output below confirms this script displays only the names that apply to our local scope.
Output (snippet)
Your imported local module names may differ from that shown below.
['annotations', 'builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'spec'] |
Method 4: Use inspect.getmember()
and a Lambda
This example uses inspect.getmember()
and a Lambda to return the imported local modules in a sorted format.
import inspect import os m = inspect.getmembers(os) res = filter(lambda x: inspect.ismodule(x[1]), m) for r in res: print(r)
This code returns the names of the imported local modules and their location on the system as an iterable object. A for
the loop is used to iterate through this and output one/line.
Output
('abc', <module 'abc' from 'C:\\mypythoninstall\\lib\\abc.py'>) |
Bonus: Count Modules
If you want to determine the total number of imported modules, use the dir()
and len()
functions.
count = dir() print(len(count))
This code references the imported local modules and uses len()
to determine how many are imported. The output is sent to the terminal.
Output
Your count
may differ from the output below.
11 |
Summary
These four (4) methods to list imported modules should give you enough information to select the best one for your coding requirements.
Good Luck & Happy Coding!