Package that imports with name of dependent package

Peter Otten __peter__ at web.de
Sat May 13 18:04:59 CEST 2006


David Pratt wrote:

> Hi. I have code that currently depends on a particular package of a
> framework. I have decided I want to create my own package because I have
> made many changes and it is getting too difficult to maintain each time
> I retrieve an updated version of the framework from svn.
> 
> The problem is, that there are all sorts of imports to the dependent
> package throughout my code and I just want to replace this module with
> something that will provide a reference to my own package without
> changing the original imports. So it just needs to point to the new
> package so that the original imports in my code will continue to work.
> 
> For example, here is a package structure.
> 
> dependentpackage
>     |
>     +----  __init__.py
>     +---- somemodule.py
>     +---- somefolder
>               |
>               +----  __init__.py
>               +---- somesubmodule.py
>     +---- someotherfolder
>     etc ....
> 
> I simply want the dependentpackage to point to the new package leaving
> no more than an init file or whatever would have to be minimally
> required to make this work
> 
> dependentpackage
>     |
>     +----  __init__.py
> 
> mypackage
>     |
>     +----  __init__.py
>     +---- somemodule.py
>     +---- somefolder
>               |
>               +----  __init__.py
>               +---- somesubmodule.py
>     +---- someotherfolder
>     etc ....
> 
> I my code I still need to have this work:
> 
> from dependentpackage.somemodule import something
> 
> - but I want the package to be getting the code from the new module.
> 
> I'd appreciate hearing of what I can do in an __init__ file or what
> other strategy could make this work. Many thanks.

I think fixing the imports is the better long-term approach. But putting

from pkgutil import extend_path
import mypackage
__path__ = extend_path(mypackage.__path__, __name__)

into dependentpackage/__init__.py might work. 

Peter






More information about the Python-list mailing list