[Scons-dev] Python 3 issue

Bill Deegan bill at baddogconsulting.com
Fri Jun 23 13:38:06 EDT 2017


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/
> RelativeImports/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/de8ba6ed/attachment.html>


More information about the Scons-dev mailing list