[Scons-dev] Python 3 issue

Bill Deegan bill at baddogconsulting.com
Fri Jun 23 13:53:24 EDT 2017


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 <bill at baddogconsulting.com>
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 <russel at winder.org.uk>
> 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/
>> script/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/
>> script/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:russel.winder at ekiga.net
>> 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel at winder.org.uk
>> London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder
>> _______________________________________________
>> Scons-dev mailing list
>> Scons-dev at scons.org
>> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/scons-dev/attachments/20170623/402ca348/attachment-0001.html>


More information about the Scons-dev mailing list