[Tutor] Configuaration files and paths?
Allen Fowler
allen.fowler at yahoo.com
Thu Aug 6 06:15:37 CEST 2009
> > What is the recommended way to configure my application find the various
> database and/or configuration files it needs?
>
> Recommemded by whom? A lot depends on the OS. Apple for example have one set of
> recommendations for MacOS, Windows has another and Linux has several to choose
> from!
>
Thank you.... good point.
Planning on using a ConfigParser based .ini file located in the ./config folder.
> > For instance my folder layout:
> >
> > /path_to_app/app.py
> > /path_to_app/lib/
> > /path_to_app/database/
> > /path_to_app/config/
> > /path_to_app/photos
> >
> > .... and so on. I would like to make an .ini in the config folder
>
> Seems fair enough, however on a Unix system you should also consider allowing
> the user to have their own personalised version in their home directory. Thus at
> startup you get the current user ID / home directory and look for a suitable
> config file. If it exists read it, if not read the default one in your config
> directory.
>
> > 1) How does my main app file find the config file in the first place?
>
> Generally use a relative path so normally your app will run from its home folder
> so you can look in ./config. You might also set a system environment variable -
> for example the CLASSPATH or PYTHONPATH variables, or the ORACLE_HOME used by
> Oracle for their database. If the environment var is not set then look in
> ./config
>
Assuming the application could be invoked in odd ways that may alter the notion of the current working directory, how do I unambiguously find the absolute path to the current python source file? (So I can load the nearby .ini)
As a follow-up question, how do give my modules stored under ./lib access to the data in my ConfigParser object? (For instance, database connection string, storage path, etc.)
I guess a global ConfigParser object would work, but that seems wrong.
More information about the Tutor
mailing list