Using nrfutil sdk v2.9.3 fails under Windows "class must define a '_type_' attribute"

Hi,

 After installing nrf sdk v2.9.3 trying to build application under Windows fails with the following message:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\ncs\toolchains\b620d30767\opt\bin\Scripts\imgtool.exe\__main__.py", line 4, in <module>
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\imgtool\main.py", line 21, in <module>
    import click
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\click\__init__.py", line 7, in <module>
    from .core import Argument as Argument
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\click\core.py", line 16, in <module>
    from . import types
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\click\types.py", line 8, in <module>
    from ._compat import _get_argv_encoding
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\click\_compat.py", line 518, in <module>
    from ._winconsole import _get_windows_console_stream
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\click\_winconsole.py", line 13, in <module>
    from ctypes import byref
  File "ctypes\__init__.py", line 157, in <module>
AttributeError: class must define a '_type_' attribute
ninja: build stopped: subcommand failed.

Trying to run any command inside the NCS shell/terminal produces similar result, e.g.:

>C:/ncs/toolchains/b620d30767/opt/bin/python.exe -m pip --version
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\__main__.py", line 22, in <module>
    from pip._internal.cli.main import main as _main
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\cli\main.py", line 11, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\cli\autocompletion.py", line 10, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\cli\main_parser.py", line 9, in <module>
    from pip._internal.build_env import get_runnable_pip
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\build_env.py", line 18, in <module>
    from pip._internal.cli.spinners import open_spinner
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\cli\spinners.py", line 9, in <module>
    from pip._internal.utils.logging import get_indentation
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\utils\logging.py", line 29, in <module>
    from pip._internal.utils.misc import ensure_dir
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\utils\misc.py", line 41, in <module>
    from pip._internal.locations import get_major_minor_version
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\locations\__init__.py", line 14, in <module>
    from . import _sysconfig
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\locations\_sysconfig.py", line 11, in <module>
    from .base import change_root, get_major_minor_version, is_osx_framework
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\locations\base.py", line 9, in <module>
    from pip._internal.utils import appdirs
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_internal\utils\appdirs.py", line 13, in <module>
    from pip._vendor import platformdirs as _appdirs
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_vendor\platformdirs\__init__.py", line 45, in <module>
    PlatformDirs = _set_platform_dir_class()  #: Currently active platform
                   ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_vendor\platformdirs\__init__.py", line 25, in _set_platform_dir_class
    from pip._vendor.platformdirs.windows import Windows as Result  # noqa: PLC0415
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_vendor\platformdirs\windows.py", line 268, in <module>
    get_win_folder = lru_cache(maxsize=None)(_pick_get_win_folder())
                                             ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ncs\toolchains\b620d30767\opt\bin\Lib\site-packages\pip\_vendor\platformdirs\windows.py", line 254, in _pick_get_win_folder
    import ctypes  # noqa: PLC0415
    ^^^^^^^^^^^^^
  File "ctypes\__init__.py", line 157, in <module>
AttributeError: class must define a '_type_' attribute

This means the problem is somewhere in python package internal to the SDK/Toolchain

Is there any known solution to this problem?

Best regards.

Parents Reply Children
  • Hello, 

    When installing the toolchain/SDK, you can select logging to be output to the terminal for nrfutil commands wtih the --log-output stdout option. You can also select the log level with --log-level <log-level>. If something goes wrong, it will show with log level warn and the lower severity levels. 

    If no warnings or errors are logged when installing the toolchain, you can try to inspect the toolchain environment with i.e. 

    nrfutil sdk-manager toolchain env --ncs-version <sdk-version>

    This will at least show where the toolchain environment thinks the correct python version is. 

    Also, could you please tell me if you are using west to build? 

    Best regards,

    Maria

Related