Fix: bt2: remove circular import (not supported before Python 3.5)
This fixes the bindings failing to load with a circular import error on
SLES12 with Python 3.4:
Traceback (most recent call last):
File "/usr/lib64/python3.4/unittest/loader.py", line 323, in _find_tests
module = self._get_module_from_name(name)
File "/usr/lib64/python3.4/unittest/loader.py", line 301, in _get_module_from_name
__import__(name)
File "/home/mjeanson/Git/babeltrace/tests/bindings/python/bt2/test_clock_class.py", line 22, in <module>
import bt2
File "/home/mjeanson/Git/babeltrace/src/bindings/python/bt2/build/build_lib/bt2/__init__.py", line 26, in <module>
from bt2.clock_class import *
File "/home/mjeanson/Git/babeltrace/src/bindings/python/bt2/build/build_lib/bt2/clock_class.py", line 23, in <module>
from bt2 import native_bt, object, utils
File "/home/mjeanson/Git/babeltrace/src/bindings/python/bt2/build/build_lib/bt2/utils.py", line 24, in <module>
import bt2.logging
File "/home/mjeanson/Git/babeltrace/src/bindings/python/bt2/build/build_lib/bt2/logging.py", line 23, in <module>
from bt2 import native_bt, object, utils
ImportError: cannot import name 'utils'
Jonathan Rajotte investigated why this happens with Python 3.4:
This is due to a circular import. utils import logging, logging import
utils.
__init__.py:
__version__= '1.0.0'
from reprod.start import *
pkg1.py:
from reprod import pkg2
pkg2.py:
from reprod import pkg1
start.py:
from reprod import pkg1
Using Python 3.4.6:
(my-virtual-env-3.4.6) joraj@/tmp/test[]$ python --version
Python 3.4.6
(my-virtual-env-3.4.6) joraj@/tmp/test[]$ python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
import reprod
File "/tmp/test/reprod/__init__.py", line 3, in <module>
from reprod.start import *
File "/tmp/test/reprod/start.py", line 1, in <module>
from reprod import pkg1
File "/tmp/test/reprod/pkg1.py", line 1, in <module>
from reprod import pkg2
File "/tmp/test/reprod/pkg2.py", line 1, in <module>
from reprod import pkg1
ImportError: cannot import name 'pkg1'
(my-virtual-env-3.4.6) joraj@/tmp/test[]$
The same reproducer run with python 3.5.6 works fine (again using pyenv):