Repository navigation
AttributeError: module 'redis' has no attribute 'client' #34227
Description
Describe the bug
After doing:
brew uninstall --formula azure-cli
brew install azure-cliTo migrate to the Cask version of az, the following error is appearing on any az commands:
% az login
The command failed with an unexpected error. Here is the traceback:
module 'redis' has no attribute 'client'
...
AttributeError: module 'redis' has no attribute 'client'Related command
az login
Errors
% az login
The command failed with an unexpected error. Here is the traceback:
module 'redis' has no attribute 'client'
Traceback (most recent call last):
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/azure/cli/core/commands/__init__.py", line 677, in execute
raise ex
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/azure/cli/core/commands/__init__.py", line 820, in _run_jobs_serially
results.append(self._run_job(expanded_arg, cmd_copy))
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/azure/cli/core/commands/__init__.py", line 789, in _run_job
result = cmd_copy(params)
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/azure/cli/core/commands/__init__.py", line 335, in __call__
return self.handler(*args, **kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/azure/cli/core/commands/command_operation.py", line 120, in handler
return op(**command_args)
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/azure/cli/command_modules/profile/custom.py", line 215, in login
subscriptions = profile.login(
interactive,
...<11 lines>...
subscription=subscription
)
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/azure/cli/core/_profile.py", line 164, in login
identity = _create_identity_instance(self.cli_ctx, self._authority, tenant_id=tenant)
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/azure/cli/core/_profile.py", line 969, in _create_identity_instance
from .auth.identity import Identity
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/azure/cli/core/auth/identity.py", line 18, in <module>
from .persistence import load_persisted_token_cache, file_extensions, load_secret_store
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/azure/cli/core/auth/persistence.py", line 12, in <module>
from msal_extensions import (FilePersistenceWithDataProtection, KeychainPersistence, LibsecretPersistence,
FilePersistence, PersistedTokenCache, CrossPlatLock)
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/msal_extensions/__init__.py", line 11, in <module>
from .token_cache import PersistedTokenCache, CrossPlatLock, LockError
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/msal_extensions/token_cache.py", line 9, in <module>
from .cache_lock import ( # pylint: disable=unused-import
...<2 lines>...
)
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/msal_extensions/cache_lock.py", line 8, in <module>
import portalocker # pylint: disable=import-error
^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/portalocker/__init__.py", line 11, in <module>
from .redis import RedisLock
File "/opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/portalocker/redis.py", line 21, in <module>
class PubSubWorkerThread(redis.client.PubSubWorkerThread):
^^^^^^^^^^^^
AttributeError: module 'redis' has no attribute 'client'Issue script & Debug output
Any az command.
Expected behavior
az cli should work, not crash
Environment Summary
azure-cli 2.91.0
core 2.91.0
telemetry 1.1.0
Extensions:
account 0.2.5
application-insights 2.0.0b2
containerapp 1.3.0b5
costmanagement 1.0.0
log-analytics 1.0.0b3
log-analytics-solution 1.0.1
logic 1.1.0
portal 1.0.0b2
quota 1.0.0
redisenterprise 1.5.0b1
storagesync 1.0.1
Dependencies:
msal 1.39.0
azure-mgmt-resource 24.0.0
Python location '/opt/homebrew/opt/python@3.14/bin/python3.14'
Config directory '/Users/thorfinn/.azure'
Extensions directory '/Users/thorfinn/.azure/cliextensions'
Python (Darwin) 3.14.8 (main, Sep 30 2026, 17:55:09) [Clang 21.0.0 (clang-2100.3.34.2)]
Legal docs and information: aka.ms/AzureCliLegal
Your CLI is up-to-date.
Additional context
No response
Activity
yonzhan commentedon Oct 15, 2026
Thank you for opening this issue, we will look into it.
thorfi commentedon Oct 15, 2026
Yong Zhang (@yonzhan) - thanks, right now I can't use the az cli at all, so this is a big problem. I tried removing my
$HOME/.azure*directories just in case, but that didn't change anything.x-engineering-agent commentedon Oct 15, 2026
@thorfi (@thorfi), the version, migration steps and traceback already identify the failure:
az logincrashes while importingmsal_extensions→portalocker→redis.client, before sign-in or token-cache access. This is the Pythonredisimport, not theazure-mgmt-redismanagement SDK. The reported invocation also goes throughbin/gitenv.sh, so we cannot yet distinguish a Cask dependency problem from that wrapper's Python import environment.Does
az loginreproduce the sameredis.clienterror when invoked directly from a fresh terminal outside the project directory, withoutbin/gitenv.sh? Please share that result, removing any tokens or personal details. That single control will determine whether to investigate the Cask's installed dependencies or the wrapper's import environment; your reply will automatically resume triage.Posted by x-engineering-agent (Fixer)
microsoft-github-policy-service commentedon Oct 15, 2026
🔔 Routing this issue to @Azure/act-identity-squad.
thorfi commentedon Oct 15, 2026
I removed
bin/gitenv.shand it still crashes, but it looks like it crashes if inside my project directory (which has a directory calledredisthat doesn't contain any python code) but if I do it in somewhere like/tmp.It seems like issue is that the current az cli is adding
.to thesys.pathsomewhere which it really should not be.thorfi commentedon Oct 15, 2026
Yong Zhang (@yonzhan) FYI Not sure if you want to re-engage your AI bot, but I made a simple reproduction sequence using the azure-cli docker container:
thorfi commentedon Oct 15, 2026
Ping Yeming Liu (@isra-fel) ^ reproduction above.
Also I can confirm that setting
export PYTHONSAFEPATH=1before runningazdoes work around the problem.microsoft-github-policy-service commentedon Oct 16, 2026
🔔 Routing this issue to @Azure/act-identity-squad.