If The same pattern works well in python at the module level, if your application is setup as a package. A module config.py sets a bunch of python variables like
import os
ENV_VAR=os.environ.get('ENV_VAR', default_value)
then the rest of the application can grab configuration with from .config import ENV_VAR
Since the assignment code executes on import, all config is read in when any piece of it is first used, consistency checks and logging can be written into the config.py module as normal python statements, config values can be cast to appropriate types (raising exceptions if they fail), etc.