[Zope-dev] Relative Imports: PEP-328

Philipp von Weitershausen philipp at weitershausen.de
Wed Oct 8 08:43:53 EDT 2008


El 8 Oct 2008, a las 14:23 , Sidnei da Silva escribió:

> On Wed, Oct 8, 2008 at 8:53 AM, Philipp von Weitershausen
> <philipp at weitershausen.de> wrote:
>> Sidnei da Silva wrote:
>>>
>>> I'm trying to fix some import errors, which seem to be related to  
>>> PEP-328.
>>>
>>> I'm fixing those errors this way, though I don't know if that's the
>>> recommended way of fixing it. Thoughts?
>>>
>>> """
>>> try:
>>>   from DT_Util import parse_params, name_param
>>> except ImportError:
>>>   # See PEP-328
>>>   from .DT_Util import parse_params, name_param
>>> """
>>
>> This will generate a SyntaxError in Python 2.4. So unless we  
>> *require*
>> Python >= 2.5, this won't work.
>
> Yuck. I hadn't thought of that. Any other suggestions? Like, using
> zope.documenttemplate? :)

zope.documenttemplate is a crippled version of DocumentTemplate. It  
doesn't have all features (e.g. it lacks the C extension module) and  
hasn't been kept up-to-date with respect to bugfixes. So it seems like  
a good idea to put this clone out of its misery and retire it.

I ultimately suggest going to absolute imports everywhere (at least as  
long as we have to maintain Python 2.4 compatibility). I realize that  
DocumentTemplate/DocumentTemplate.py creates a problem. So here's what  
I suggest:

   1. Rename DocumentTemplate/DocumentTemplate.py to, say,
      DocumentTemplate/DocTemplate.py (feel free to come up with
      a better name)

   2. Introduce absolute imports to DocumentTemplate.DocTemplate
      everywhere

   3. Ensure backwards compatibility by adding the following lines
      to DocumentTemplate/__init__.py::

     import DocumentTemplate.DocTemplate
     import sys
     sys.modules['DocumentTemplate.DocumentTemplate'] =  
DocumentTemplate.DocTemplate

I *think* this should work.



More information about the Zope-Dev mailing list