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/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:[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
