Trying to Learn Packages
omer at no-log.org
Sun Jun 22 17:53:00 CEST 2008
Le Sunday 22 June 2008 16:07:37 Saul Spatz, vous avez écrit :
> I'm making a project into my first package, mainly for organization, but
> also to learn how to do it. I have a number of data files, both
> experimental results and PNG files. My project is organized as a root
> directory, with two subdirectories, src and data, and directory trees
> below them. I put the root directory in my pythonpath, and I've no
> trouble accessing the modules, but for the data, I'm giving relative
> paths, that depend on the current working directory.
> This has obvious drawbacks, and hard-coding a directory path is worse.
> Where the data files are numbers, I can simply incorporate them in
> python scripts that initialize data structures , but what can I do with
> the image files?
For a small project you can do the same with images or any kind of data, for
instance by serializing your objects with pickle in ascii mode and putting
the result in a string constant (well, I never did it and can't guarantee it
will work, this is only an example of what people do in many situations)
> What is the usual way of dealing with this?
A more conventional way is to provide a configure script to run before
compiling/installing. That script should let the user choose where to install
datafiles with a command line option such as --datadir=/path or provide a
reasonable default value. Then it will auto-generate some code defining this
value as a global variable, to make it accessible to the rest of your own
code. Ideally, your app would also provide a command line option or an
environment variable to override this hard-coded setting at runtime.
But maybe the distutils tools have some features for this, I don't know enough
of them to tell that.
More information about the Python-list