How to properly import BuiltIn Python 3.8

124 views
Skip to first unread message

Michael Rosenhahn

unread,
Nov 12, 2021, 1:34:19 PM11/12/21
to robotframework-users
When using Python 2.7 and RobotFramework 3.0.2, from Python I was able to import BuiltIn using the following import statement. from robot.libraries.BuiltIn import BuiltIn. I was using to BuiltIn class to get some variable data using the following method.

        from robot.libraries.BuiltIn import BuiltIn
        from robot.libraries.BuiltIn import RobotNotRunningError

        try:
            variables = BuiltIn().get_variables()
            return variables['${OUTPUTDIR}']
        except RobotNotRunningError:
            return os.getcwd()

After upgrading my Python environment to 3.8 and RobotFramework to 4.1.2, I now hit an error with this import (stack trace below). What is the proper way to import the BuiltIn libraries into Python 3.8?


Traceback (most recent call last):
  File "/root/git/cafe/misc/tshark_sandbox/tshark_sandbox.py", line 1, in <module>
    from robot.libraries.BuiltIn import BuiltIn
  File "/usr/local/lib/python3.8/site-packages/robot/libraries/BuiltIn.py", line 23, in <module>
    from robot.api import logger, SkipExecution
  File "/usr/local/lib/python3.8/site-packages/robot/api/__init__.py", line 72, in <module>
    from robot.parsing import (get_tokens, get_resource_tokens, get_init_tokens,
  File "/usr/local/lib/python3.8/site-packages/robot/parsing/__init__.py", line 25, in <module>
    from .model import ModelTransformer, ModelVisitor
  File "/usr/local/lib/python3.8/site-packages/robot/parsing/model/__init__.py", line 18, in <module>
    from .statements import Statement
  File "/usr/local/lib/python3.8/site-packages/robot/parsing/model/statements.py", line 19, in <module>
    from robot.running.arguments import UserKeywordArgumentParser
  File "/usr/local/lib/python3.8/site-packages/robot/running/__init__.py", line 99, in <module>
    from .builder import TestSuiteBuilder, ResourceFileBuilder
  File "/usr/local/lib/python3.8/site-packages/robot/running/builder/__init__.py", line 16, in <module>
    from .builders import TestSuiteBuilder, ResourceFileBuilder
  File "/usr/local/lib/python3.8/site-packages/robot/running/builder/builders.py", line 20, in <module>
    from robot.parsing import SuiteStructureBuilder, SuiteStructureVisitor
ImportError: cannot import name 'SuiteStructureBuilder' from partially initialized module 'robot.parsing' (most likely due to a circular import) (/usr/local/lib/python3.8/site-packages/robot/parsing/__init__.py

Michael Rosenhahn

unread,
Nov 24, 2021, 5:08:56 PM11/24/21
to robotframework-users
Turns out uninstalling and reinstalling robot fixed this issue.
Reply all
Reply to author
Forward
0 new messages