[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