Keepin constants, configuration values, etc. in Python - dedicated module or what?

cl at cl at
Tue Sep 30 17:06:19 CEST 2014

Rustom Mody <rustompmody at> wrote:
> On Tuesday, September 30, 2014 5:18:31 PM UTC+5:30, Chris wrote:
> > I would actually
> > quite like to keep the configuration data separate from the code as it
> > would simplify using the data at the 'home' end of things as I'd just
> > need to copy the configuration file across.  This was why the database
> > approach appealed at first as all I need to do is copy the database
> > and everything is in there.
> Of course
> > Are there any better ways of doing this?  E.g. some sort of standard
> > configuration file format that Python knows about? 
> Umm this is getting to be a FAQ...
> Maybe it should go up somewhere?
> Yes there are dozens:
> - ini
> - csv
> - json
> - yml
> - xml
> - pickle
> - And any DBMS of your choice
> I guess Ive forgotten as many as Ive listed!!

Yes, I know, I've found most of those.  I'm really asking for help in
choosing which to use.  I think I can reject some quite quickly:-

    ini - doesn't work so well with lists/dictionaries (though possible)
    csv - rather difficult to edit
    json - one of the most likely possibilities, but prefer yml
    yml - front runner if I go for configuration files
    xml - horrible, nasty to edit, etc. I don't like XML! :-)
    pickle - not user editable as I understand it
    dbms - current solution in sqlite3 as described

What I'm really asking for is how to choose between:-

    DBMS - present solution, keeps config with data easily but more
    code and less easy to change
    yml - easy to edit config, keeps data separate from code but needs
    YAML installed and separate files to manage
    python - just keep config in the modules/classes, not easy to use
    at 'both ends' (home and remote), otherwise quite simple

My requirements are:-
    Easy to change, i.e.human readable format which can be edited
    simply as I have to do this via a terminal/ssh.
    Easy to use at local end as well as remote end, the remote end is
    where it lives and is the 'driver' as it were but I need to know
    the configuration at the local end as well.
Chris Green

More information about the Python-list mailing list