What’s Python good practice for importing and offering optional features?

The try: method does not need to be global — it can be used in any scope and so modules can be “lazy-loaded” at runtime. For example:

def foo():
    try:
        import external_module
    except ImportError:
        external_module = None 

    if external_module:
        external_module.some_whizzy_feature()
    else:
        print("You could be using a whizzy feature right now, if you had external_module.")

When your script is run, no attempt will be made to load external_module. The first time foo() is called, external_module is (if available) loaded and inserted into the function’s local scope. Subsequent calls to foo() reinsert external_module into its scope without needing to reload the module.

In general, it’s best to let Python handle import logic — it’s been doing it for a while. 🙂

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)