[Import-SIG] Loading Resources From a Python Module/Package
erik.m.bray at gmail.com
Mon Feb 2 23:34:59 CET 2015
Sorry for the late reply, but I'm still catching up on this...
On Fri, Jan 30, 2015 at 6:37 PM, Donald Stufft <donald at stufft.io> wrote:
> It's often times useful to be able to load a resource from a Python module or
> packaging. Currently you can load the data into memory using pkgutil.get_data
> however this doesn't help much if you need to pass that data into an API that
> only accepts a filepath. Currently code that needs to do this often times does
> something like os.path.join(os.path.dirname(__file__), "myfile.txt"), however
> that doesn't work from within a zip file.
> A. What do people think about pkgutil.get_data_filename and
Big +1 for me. This deficiency has been an annoyance to me for some
time--just, I guess, not enough of an annoyance to propose any general
solution. Astropy has some pretty hideous workarounds  to get
resource loading from zipfiles working, and even then it only works
for zipfile loaders and not other arbitrary loaders. Fortunately
that's the only case I know if that matters to me (for use with
PyInstaller and other such software bundlers).
So I would love to see such an interface, and although one could argue
about the details I think the interface you proposed for
Loader.get_data_filename is fairly obvious and would have been my
first pass proposal as well.
> B. What do people think about modifying Loader.get_data so it can support
> relative filenames instead of the calling code needing to handle that?
Yes, please. Makes much more sense.
More information about the Import-SIG