En Fri, 22 Feb 2008 05:28:22 -0200, Sam Peterson <[EMAIL PROTECTED]> escribió: > Robert Bossy <[EMAIL PROTECTED]> on Wed, 20 Feb 2008 09:29:12 > +0100 didst step forth and proclaim thus: > >> Sam Peterson wrote: >>> I've been googling for a while now and cannot find a good way to deal >>> with this. >>> >>> I have a slightly messy python program I wrote that I've historically >>> just run from the extracted source folder. I have pictures and sound >>> files in this folder that this program uses. I've always just used >>> the relative path names of these files in my program. >>> >>> Lately, I had the idea of cleaning up my program and packaging it with >>> distutils, but I've been stuck on a good way to deal with these >>> resource files. The package_data keyword seems to be the way to go, >>> but how can I locate and open my files once they've been moved? In >>> other words, what should I do about changing the relative path names? >>> I need something that could work from both the extracted source >>> folder, AND when the program gets installed via the python setup.py >>> install command. >>> >> This seems to be a classic distutils question: how a python module >> can access to data files *after* being installed? > > > I think I'll kill the idea of using distutils for my program. It > seems like distutils was primarily designed for modules and > extensions.
And packages. The package_data directive specifies data subdirectories that will be installed under the package directory; you can use a relative path starting at the package dir. (the thread above is about the install-data command-line option, but package_data isn't affected by that). That is, if you have: pkg/ __init__.py images/ foo.jpg sounds/ bar.snd At the top of __init__.py, you can say: pkg_path = os.path.dirname(__file__) images_path = os.path.join(pkg_path, "images") sounds_path = os.path.join(pkg_path, "sounds") It doesn't matter *where* pkg is actually installed, you can always reach its subdirectories. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list