[Python-Dev] stupid package tricks

Phillip J. Eby pje at telecommunity.com
Mon Dec 12 22:29:36 CET 2005


At 10:03 PM 12/12/2005 +0100, Fredrik Lundh wrote:
>the xml/__init__.py file contains a cute little hack that overrides
>the *entire* xml subtree with stuff from PyXML, if available.
>>the code basically does
>> import _xmlplus
> sys.modules[__name__] = _xmlplus
>>(exception handling and version checks not shown).
>>however, this means that as things are right now, xml.etree will
>simply disappear if the user has PyXML on the machine.
>>what's the best way to fix this? the obvious fix is of course to do
>something like
>> import _xmlplus
> import xml.etree
> _xmlplus.etree = xml.etree
> sys.modules[__name__] = _xmlplus
>>but I have to admit that I'm no expert on package internals, so I
>might be missing something here. will the above solution work in
>all cases? is there some better way to do it?

I'd suggest:
 import _xmlplus
 _xmlplus.__path__.extend(__path__)
 sys.modules[__name__] = _xmlplus
This ensures that any modules or packages inside 'xml' that aren't 
explicitly overridden by _xmlplus will still be available.


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /