[Python-Dev] import vs. data files (Fwd: ResourcePackage 1.0.0a2 available...) (original) (raw)

Just van Rossum just@letterror.com
Mon, 13 Jan 2003 20:59:41 +0100


FWIW, I find the project below an interesting approach to the data file problem -- there's no import magic at all and should be compatible with any packaging scheme.

Just

From: "Mike C. Fletcher" <mcfletch@rogers.com> Subject: ResourcePackage 1.0.0a2 available... Date: Mon, 13 Jan 2003 11:45:24 -0500 Newsgroups: comp.lang.python Message-ID: <mailman.1042476451.9009.python-list@python.org>

ResourcePackage is a mechanism for automatically managing resources (i.e. non-Python files: small images, documentation files, binary data) embedded in Python modules (as Python source code), particularly for those wishing to create re-usable Python packages which require their own resource-sets. ResourcePackage allows you to set up resource-specific sub-packages within your package. It creates a Python module for each resource placed in the resource package's directory during development. You can set up these packages with a simple file-copy and then use the resources saved/updated in the package directory like so: from mypackage.resources import openicon result = myStringLoadingFunction( openicon.data ) ResourcePackage scans the package-directory on import to refresh module contents, so simply saving an updated version of the file will make it available the next time your application is run. When you are ready to distribute your package, you need only replace the copied file with a dummy init.py to disable the scanning support and eliminate all dependencies on resourcepackage (that is, your users do not need to have resourcepackage installed once this is done). Users of your packages do not need to do anything special when creating their applications to give you access to your resources, as they are simply Python packages/modules included in your package's hierarchy. Your package's code (other than the mentioned init.py) doesn't change. Note: there is code in resource package to allow you to manually refresh your package directories w/out copying in init.py. I haven't yet wrapped that as a script, but intend to for the 1.0 release. ResourcePackage is currently in 1.0 alpha status, it appears to work properly, but it has only had minimal testing. You can get the distribution from the project page at: http://sourceforge.net/projects/resourcepackage/ I'm interested in any bug reports, enhancement requests or comments. Enjoy all, Mike Fletcher


Mike C. Fletcher Designer, VR Plumber, Coder http://members.rogers.com/mcfletch/