O.k so relative imports should work with both py3 and py2, but likely our
tool import logic is breaking it with py3.
(the logic is different for py3
https://bitbucket.org/scons/scons/src/e2d9abca56a519930e5846a3634c85074fcbba47/src/engine/SCons/Tool/__init__.py?at=default&fileviewer=file-view-default#__init__.py-164)


Can we live with absolute imports until we resolve the issue?

-Bill

On Fri, Jun 23, 2017 at 10:53 AM, Bill Deegan <[email protected]>
wrote:

> This change:
> https://bitbucket.org/bdbaddog/scons-russel-example/commits/
> 48899a710f9afbec891307addd6ae5b9c08d53c9?at=master
>
> Will make it work in py2 and py3.
>
> Any reason we can't live with that?
>
> -Bill
>
> On Fri, Jun 23, 2017 at 10:38 AM, Bill Deegan <[email protected]>
> wrote:
>
>> Russel,
>>
>> I've created a git repo in bitbucket to facilitate talking about this
>> issue.
>>
>> https://bitbucket.org/bdbaddog/scons-russel-example
>>
>> And given you permissions.
>> The second commit should be the same as your zip file.
>> Going forward, it's far easier to create a throwaway repo and share it
>> than to pass zip files back and forth..
>>
>> -Bill
>>
>>
>> On Fri, Jun 23, 2017 at 7:14 AM, Russel Winder <[email protected]>
>> wrote:
>>
>>> Python 3 changed the way imports worked, absolute imports became the
>>> norm. However relative imports were retain via extra syntax. This has,
>>> I believe been backported to Python 2.7.
>>>
>>> The summary of the situation is that to enable tools as packages as
>>> well as tools as modules, you have to use relative imports of generate
>>> and exists in __init__.py. This used to work fine. A very minor change
>>> of syntax means it all still works on Python 2. However on Python 3
>>> something weird happens. This is a SCons thing, because if you do the
>>> equivalent it pure Python is works fine with either 2 or 3.
>>>
>>> So given the attached project:
>>>
>>> > python /home/users/russel/Repositories/Mercurial/Forks/SCons/src/sc
>>> ript/scons.py
>>> scons: Reading SConscript files ...
>>> __init__ loaded.
>>> generate called.
>>> scons: done reading SConscript files.
>>> scons: Building targets ...
>>> scons: `.' is up to date.
>>> scons: done building targets.
>>> 546 lavaine:~/Progs/OddsByLanguage/SCons/RelativeImports
>>> |> python3 /home/users/russel/Repositories/Mercurial/Forks/SCons/src/sc
>>> ript/scons.py
>>> scons: Reading SConscript files ...
>>> SystemError: Parent module 'relative' not loaded, cannot perform
>>> relative import:
>>>   File 
>>> "/home/users/russel/Progs/OddsByLanguage/SCons/RelativeImports/SConstruct",
>>> line 1:
>>>     env = Environment(tools=['relative'])
>>>   File 
>>> "/home/users/russel/Repositories/Mercurial/Forks/SCons/src/engine/SCons/Environment.py",
>>> line 982:
>>>     apply_tools(self, tools, toolpath)
>>>   File 
>>> "/home/users/russel/Repositories/Mercurial/Forks/SCons/src/engine/SCons/Environment.py",
>>> line 107:
>>>     env.Tool(tool)
>>>   File 
>>> "/home/users/russel/Repositories/Mercurial/Forks/SCons/src/engine/SCons/Environment.py",
>>> line 1788:
>>>     tool = SCons.Tool.Tool(tool, toolpath, **kw)
>>>   File 
>>> "/home/users/russel/Repositories/Mercurial/Forks/SCons/src/engine/SCons/Tool/__init__.py",
>>> line 115:
>>>     module = self._tool_module()
>>>   File 
>>> "/home/users/russel/Repositories/Mercurial/Forks/SCons/src/engine/SCons/Tool/__init__.py",
>>> line 228:
>>>     spec.loader.exec_module(module)
>>>   File "<frozen importlib._bootstrap_external>", line 697:
>>>
>>>   File "<frozen importlib._bootstrap>", line 222:
>>>
>>>   File "/home/users/russel/Progs/OddsByLanguage/SCons/RelativeImpor
>>> ts/site_scons/site_tools/relative/__init__.py", line 3:
>>>     from .thingy import generate, exists
>>>
>>>
>>>
>>> --
>>> Russel.
>>> ============================================================
>>> =================
>>> Dr Russel Winder      t: +44 20 7585 2200   voip:
>>> sip:[email protected]
>>> 41 Buckmaster Road    m: +44 7770 465 077   xmpp: [email protected]
>>> London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder
>>> _______________________________________________
>>> Scons-dev mailing list
>>> [email protected]
>>> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>>>
>>>
>>
>
_______________________________________________
Scons-dev mailing list
[email protected]
https://pairlist2.pair.net/mailman/listinfo/scons-dev

Reply via email to