Tom E H wrote: > My Python application includes some data files that need to be accessed by > modules I distribute with it. > > Where can I put them, and how should I arrange my code, so that it works > across platforms? > > On Linux, I could install the data to "/usr/lib/myprogram/datafile", and > on Windows to "datafile" relative to where the executable (made by > py2exe) is installed. Then I could detect the operating system, and choose > appropriately. > > To be that explicit seems undesirable. Any cleverer ideas? > > Tom > > (Please CC me on replies: I'm not subscribed. The From address is munged) > I almost always send along an application.ini file and put the location of where my data is to be stored in that file instead of imbedding (or worse, hard-coding) it in the application program itself. I also put other parameters that the user might want to change that will change the behavior of my program (debugging, logging, etc.) there also. Then during installation I modify the option in this file with the install script.
Something like: [init] debug=0 quiet=0 datafilepath=/usr/lib/myprogram/datafile or [init] debug=0 quiet=0 datafilepath=C:\Program Files\myprogram\datafile Then I use ConfigParser in my application to read this file and extract the parameters. Makes it easy for more experienced users (and me) to be able to easily relocate the datafile if they desire. On Windows I use Inno Installer and it can modify these options inside the .ini file during the installation so that datafilepath points to where my data actually will live. Works perfectly for me. -Larry Bates -- http://mail.python.org/mailman/listinfo/python-list