[Import-SIG] making it feasible to rely on loaders for reading intra-package data files
Barry Warsaw
barry at python.org
Mon Feb 3 22:00:36 CET 2014
On Feb 01, 2014, at 01:44 PM, Brett Cannon wrote:
>Over on distutils-sig it came up that getting people to not simply assume
>that __file__ points to an actual file and thus avoid using open() directly
>to read intra-package files is an issue.
I've always recommended that people use the Resource Manager APIs of
pkg_resources to get at in-package data[*]. Those have always been the most
reliable APIs AFAICT, but it's a shame that they're not available in the
stdlib in any kind of backward compatible way. Maybe the breadth or
implementation of pkg_resources prevents it from being adopted wholesale into
stdlib (and of course, it's too late for 3.4), but I really think we need
something like that which we can promote loud and far. And then there's PEP
365.
pkgutil.get_data() is as close as the stdlib comes I think, but it's not
enough since sometimes you actually need a file name, or some of the other
pkg_resources APIs.
-Barry
[*] Specifically: resource_exists(), resource_stream(), resource_string(),
resource_isdir(), resource_listdir().
More information about the Import-SIG
mailing list