Autocompleting Python Modules
Simplifying the search for modules to execute from a shell.
The last few times I overhauled an execution environment I required people to execute the bulk of their tools via python -m package.module
instead of python package/module.py
(to enable the development environment).
The downside is that you lose shell autocompletion, which can be a big deal if you have dozens of tools that you only occasionally use.
This addition to your ~/.bashrc
fixes that.
Essentially, it walks sys.path
(or the __path__
of the most specific package given) looking for modules that match. Packages are only listed if a __main__
module exist within them.
For example, wsgi
completes to wsgiref.
, and then:
$ python -m wsgiref. wsgiref.handlers wsgiref.headers wsgiref.simple_server wsgiref.util wsgiref.validate
Warning: This does import the most specific package given (e.g. autocompleting email.mime
will import it, and therefore may have side effects).
Happy scripting!