[Import-SIG] New PEP draft: "Simplified Package Layout and Partitioning"

P.J. Eby pje at telecommunity.com
Tue Jul 19 00:52:08 CEST 2011


At 08:07 AM 7/19/2011 +1000, Nick Coghlan wrote:
>On Tue, Jul 19, 2011 at 2:17 AM, Barry Warsaw <barry at python.org> wrote:
> > 2. The __file__ issue.  My gut tells me that pure virtual modules 
> should have
> >   None as their __file__.  It seems wrong to use anything else, and your
> >   "accidentally work" observation is not calming. ;)
> >
> >   The inability to use __file__ to find data files is somewhat troubling
> >   though.  Let's say we want to find the foo/test/data subdir above, and
> >   `foo` is pure-virtual, while `test` is an __init__.py-less package.
> >
> >   I'm fine not being able to use foo.__file__, but I will probably want to
> >   use `os.path.join(foo.test.__file__, 'data')`.  Will that 
> work?  What would
> >   foo.test's __file__ be?  The `foo/test` directory perhaps?  Of 
> course there
> >   could be multiple `foo/test` directories, so this is probably why your
> >   suggesting to search foo.test.__path__ instead.
> >
> >   I'd actually be okay with that, *if* pkg_resources will be updated to
> >   handle this case.  In general, we've been recommending people use
> >   pkg_resources anyway (wasn't there a push to move part of this 
> package into
> >   the stdlib?).
>
>pkgutil.get_data() needs to be updated to handle this case, so
>retrieving the contents of a specific file in the directory above
>could be written as either of the following:
>
>pkgutil.get_data(foo, 'test/data/file.dat')
>pkgutil.get_data(foo.test, 'data/file.dat')

Really, these should be done relative to either a module or a 
self-contained package, unless we want to modify these things to 
search the __path__ -- and I'm not entirely sure that we do.


>The question of PEP 302 and listing *available* data files (and other
>directory-style or lazy data access I/O operations) remains open
>(independent of the changes in this PEP). Note that os.path.join based
>approaches already break as soon as you put the package and data files
>in a zipfile.
>
>In reality, I believe people should be using the appropriate packaging
>APIs so that source files and data files may be deployed to distinct
>locations.

Indeed. 



More information about the Import-SIG mailing list