We restarted HA to update our reolink and google integrations on 2026.6.2 and noticed that they were getting errors:
home-assistant | 2026-07-07 10:30:45.321 ERROR (MainThread) [homeassistant.setup] Setup failed for 'google': Unable to import component: Exception importing homeassistant.components.google
home-assistant | Traceback (most recent call last):
home-assistant | File "/usr/src/homeassistant/homeassistant/loader.py", line 1091, in _get_component
home-assistant | ComponentProtocol, importlib.import_module(self.pkg_path)
home-assistant | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
home-assistant | File "/usr/src/homeassistant/homeassistant/util/loop.py", line 201, in protected_loop_func
home-assistant | return func(*args, **kwargs)
home-assistant | File "/usr/local/lib/python3.14/importlib/__init__.py", line 88, in import_module
home-assistant | return _bootstrap._gcd_import(name[level:], package, level)
home-assistant | ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
home-assistant | File "<frozen importlib._bootstrap>", line 1406, in _gcd_import
home-assistant | File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
home-assistant | File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked
home-assistant | File "<frozen importlib._bootstrap>", line 938, in _load_unlocked
home-assistant | File "<frozen importlib._bootstrap_external>", line 759, in exec_module
home-assistant | File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed
home-assistant | File "/usr/src/homeassistant/homeassistant/components/google/__init__.py", line 30, in <module>
home-assistant | from .api import ApiAuthImpl, get_feature_access
home-assistant | File "/usr/src/homeassistant/homeassistant/components/google/api.py", line 9, in <module>
home-assistant | from oauth2client.client import (
home-assistant | ...<5 lines>...
home-assistant | )
home-assistant | File "/usr/local/lib/python3.14/site-packages/oauth2client/client.py", line 45, in <module>
home-assistant | from oauth2client import crypt
home-assistant | File "/usr/local/lib/python3.14/site-packages/oauth2client/crypt.py", line 55, in <module>
home-assistant | from oauth2client import _pycrypto_crypt
home-assistant | File "/usr/local/lib/python3.14/site-packages/oauth2client/_pycrypto_crypt.py", line 16, in <module>
home-assistant | from Crypto.Hash import SHA256
home-assistant | File "/usr/local/lib/python3.14/site-packages/Crypto/Hash/SHA256.py", line 23, in <module>
home-assistant | from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
home-assistant | ...<3 lines>...
home-assistant | c_uint8_ptr)
home-assistant | File "/usr/local/lib/python3.14/site-packages/Crypto/Util/_raw_api.py", line 87, in <module>
home-assistant | ffi = FFI()
home-assistant | File "/usr/local/lib/python3.14/site-packages/cffi/api.py", line 47, in __init__
home-assistant | raise Exception("Version mismatch: this is the 'cffi' package version %s, located in %r. When we import the top-level '_cffi_backend' extension module, we get version %s, located in %r. The two versions should be equal; check your installation." % (
home-assistant | __version__, __file__,
home-assistant | backend.__version__, backend.__file__))
home-assistant | Exception: Version mismatch: this is the 'cffi' package version 2.1.0, located in '/usr/local/lib/python3.14/site-packages/cffi/api.py'. When we import the top-level '_cffi_backend' extension module, we get version 2.0.0, located in '/usr/local/lib/python3.14/site-packages/_cffi_backend.cpython-314-x86_64-linux-musl.so'. The two versions should be equal; check your installation.
home-assistant |
home-assistant |
home-assistant | The above exception was the direct cause of the following exception:
home-assistant |
home-assistant |
home-assistant | Traceback (most recent call last):
home-assistant | File "/usr/src/homeassistant/homeassistant/loader.py", line 1031, in async_get_component
home-assistant | comp = await self.hass.async_add_import_executor_job(
home-assistant | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
home-assistant | self._get_component, True
home-assistant | ^^^^^^^^^^^^^^^^^^^^^^^^^
home-assistant | )
home-assistant | ^
home-assistant | File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 86, in run
home-assistant | result = ctx.run(self.task)
home-assistant | File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 73, in run
home-assistant | return fn(*args, **kwargs)
home-assistant | File "/usr/src/homeassistant/homeassistant/loader.py", line 1102, in _get_component
home-assistant | raise ImportError(f"Exception importing {self.pkg_path}") from err
home-assistant | ImportError: Exception importing homeassistant.components.google
home-assistant |
home-assistant |
home-assistant | During handling of the above exception, another exception occurred:
home-assistant |
home-assistant |
home-assistant | Traceback (most recent call last):
home-assistant | File "/usr/src/homeassistant/homeassistant/loader.py", line 1091, in _get_component
home-assistant | ComponentProtocol, importlib.import_module(self.pkg_path)
home-assistant | ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
home-assistant | File "/usr/src/homeassistant/homeassistant/util/loop.py", line 201, in protected_loop_func
home-assistant | return func(*args, **kwargs)
home-assistant | File "/usr/local/lib/python3.14/importlib/__init__.py", line 88, in import_module
home-assistant | return _bootstrap._gcd_import(name[level:], package, level)
home-assistant | ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
home-assistant | File "<frozen importlib._bootstrap>", line 1406, in _gcd_import
home-assistant | File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
home-assistant | File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked
home-assistant | File "<frozen importlib._bootstrap>", line 938, in _load_unlocked
home-assistant | File "<frozen importlib._bootstrap_external>", line 759, in exec_module
home-assistant | File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed
home-assistant | File "/usr/src/homeassistant/homeassistant/components/google/__init__.py", line 30, in <module>
home-assistant | from .api import ApiAuthImpl, get_feature_access
home-assistant | File "/usr/src/homeassistant/homeassistant/components/google/api.py", line 9, in <module>
home-assistant | from oauth2client.client import (
home-assistant | ...<5 lines>...
home-assistant | )
home-assistant | File "/usr/local/lib/python3.14/site-packages/oauth2client/client.py", line 45, in <module>
home-assistant | from oauth2client import crypt
home-assistant | File "/usr/local/lib/python3.14/site-packages/oauth2client/crypt.py", line 55, in <module>
home-assistant | from oauth2client import _pycrypto_crypt
home-assistant | File "/usr/local/lib/python3.14/site-packages/oauth2client/_pycrypto_crypt.py", line 16, in <module>
home-assistant | from Crypto.Hash import SHA256
home-assistant | File "/usr/local/lib/python3.14/site-packages/Crypto/Hash/SHA256.py", line 23, in <module>
home-assistant | from Crypto.Util._raw_api import (load_pycryptodome_raw_lib,
home-assistant | ...<3 lines>...
home-assistant | c_uint8_ptr)
home-assistant | File "/usr/local/lib/python3.14/site-packages/Crypto/Util/_raw_api.py", line 87, in <module>
home-assistant | ffi = FFI()
home-assistant | File "/usr/local/lib/python3.14/site-packages/cffi/api.py", line 47, in __init__
home-assistant | raise Exception("Version mismatch: this is the 'cffi' package version %s, located in %r. When we import the top-level '_cffi_backend' extension module, we get version %s, located in %r. The two versions should be equal; check your installation." % (
home-assistant | __version__, __file__,
home-assistant | backend.__version__, backend.__file__))
home-assistant | Exception: Version mismatch: this is the 'cffi' package version 2.1.0, located in '/usr/local/lib/python3.14/site-packages/cffi/api.py'. When we import the top-level '_cffi_backend' extension module, we get version 2.0.0, located in '/usr/local/lib/python3.14/site-packages/_cffi_backend.cpython-314-x86_64-linux-musl.so'. The two versions should be equal; check your installation.
home-assistant |
home-assistant |
home-assistant | The above exception was the direct cause of the following exception:
home-assistant |
home-assistant |
home-assistant | Traceback (most recent call last):
home-assistant | File "/usr/src/homeassistant/homeassistant/setup.py", line 341, in _async_setup_component
home-assistant | component = await integration.async_get_component()
home-assistant | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
home-assistant | File "/usr/src/homeassistant/homeassistant/loader.py", line 1051, in async_get_component
home-assistant | self._component_future.result()
home-assistant | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
home-assistant | File "/usr/src/homeassistant/homeassistant/loader.py", line 1043, in async_get_component
Essentially, the CFFI python package was at version 2.1.0 and the compiled _cffi_backend package was version 2.0.0. They need to match or exceptions are thrown.
I'm only mapping the /config folder in my container, so it's using site-packages from within the image.
I tried deleting the container, deleting the images, redownloading everything from ghcr.io and recreating the container. No dice.
It seems like the image itself has the mismatched versions.
To fix, I did the following:
docker exec -it home-assistant python3 -m pip install --force-reinstall --no-cache-dir cffi==2.1.0
docker exec -it home-assistant python3 -c "import cffi, _cffi_backend; print(cffi.__version__, cffi.__file__); print(_cffi_backend.__version__, _cffi_backend.__file__)"
docker restart home-assistant
(the second line just prints both versions to ensure that they match)
That fixed the issue, but only temporarily until the image is updated. Perhaps the container build itself could be fixed for the next version.