I’ve seen people use monkey-patching to set options on a module, for example:
import mymodule
mymodule.default_img = "/my/file.png"
mymodule.view_default_img()
And Django, for example, has settings.py for the entire Django app, and it always grates on me a little.
What are the other ways to manage configuration settings on a module? What’s recommended? It seems like there’s often no nice way to setup module-level configuration.
Obviously, completely avoiding configuration is by far the most preferable, and it’s usually better to use classes, or pass in the argument to a function. But sometimes you can’t avoid having settings of some sort, and sometimes it really does make sense to have global module-wide settings just for convenience (for example, Django’s template system — having to specify the base path for every template would be a nightmare, definitely not good DRY code).
One option is the ConfigParser module. You could have the settings in a non-python config file and have each module read its settings out of that. Another option is to have a config method in each module that the client code can pass it’s arguments too.
Then in the importing module,
Personally, I think that the best way to do it is with the settings file like django.