[Python-3000] Should package __init__ files include pkgutil.extend_path?
Phillip J. Eby
pje at telecommunity.com
Tue Sep 9 19:06:15 CEST 2008
At 03:28 PM 9/6/2008 -0700, Brett Cannon wrote:
>On Sat, Sep 6, 2008 at 2:06 PM, <skip at pobox.com> wrote:
> > I'm trying to figure out how to install this dbm.sqlite module I have
> > without overwriting the basic install. My thought was to create a dbm
> > package in site-packages then copy sqlite.py there. That doesn't work
> > though. Modifying dbm.__init__.py to include this does:
> >
> > import pkgutil
> > __path__ = pkgutil.extend_path(__path__, __name__)
> >
> > I'm wondering if all the core packages in 3.x should include the above in
> > their __init__.py files.
> >
>
>Well, a side-effect of this is that all package imports will suddenly
>spike the number of stat calls linearly to the number of entries on
>sys.path.
"All package imports"? "Spike"?
>Another option is to use a pth file that imports your module (as like
>_dbm_sqlite.py or something) and have it, as a side-effect of
>importing, set itself on dbm.
That adds an import to startup time, whether you use the package or
not. At least extend_path will only take effect if you actually
import that package.
More information about the Python-3000
mailing list