azure-cli: Error on az connectedk8s connect: cannot import name '_psutil_linux' from partially initialized module 'psutil'
Describe the bug
When running az connectedk8s connect
I get an error on Linux (Fedora 34).
Command Name
az connectedk8s connect
Errors:
The command failed with an unexpected error. Here is the traceback:
cannot import name '_psutil_linux' from partially initialized module 'psutil' (most likely due to a circular import) (/usr/lib64/az/lib/python3.6/site-packages/psutil/__init__.py)
Traceback (most recent call last):
File "/usr/lib64/az/lib/python3.6/site-packages/knack/cli.py", line 231, in invoke
cmd_result = self.invocation.execute(args)
File "/usr/lib64/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 556, in execute
self.commands_loader.load_arguments(command)
File "/usr/lib64/az/lib/python3.6/site-packages/azure/cli/core/__init__.py", line 517, in load_arguments
self.command_table[command].load_arguments() # this loads the arguments via reflection
File "/usr/lib64/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 313, in load_arguments
super(AzCliCommand, self).load_arguments()
File "/usr/lib64/az/lib/python3.6/site-packages/knack/commands.py", line 104, in load_arguments
cmd_args = self.arguments_loader()
File "/usr/lib64/az/lib/python3.6/site-packages/azure/cli/core/commands/command_operation.py", line 125, in arguments_loader
op = self.get_op_handler(self.op_path)
File "/usr/lib64/az/lib/python3.6/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
handler = import_module(mod_to_import)
File "/usr/lib64/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 855, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/home/koc/.azure/cliextensions/connectedk8s/azext_connectedk8s/custom.py", line 22, in <module>
from psutil import process_iter, NoSuchProcess, AccessDenied, ZombieProcess, net_connections
File "/usr/lib64/az/lib/python3.6/site-packages/psutil/__init__.py", line 99, in <module>
from . import _pslinux as _psplatform
File "/usr/lib64/az/lib/python3.6/site-packages/psutil/_pslinux.py", line 26, in <module>
from . import _psutil_linux as cext
ImportError: cannot import name '_psutil_linux' from partially initialized module 'psutil' (most likely due to a circular import) (/usr/lib64/az/lib/python3.6/site-packages/psutil/__init__.py)
To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.
- Install extension
az extension add --name connectedk8s
- Register K8s Cluster
az connectedk8s connect
Expected Behavior
The command works.
Environment Summary
Linux-5.12.6-300.fc34.x86_64-x86_64-with-glibc2.33
Python 3.9.5
Installer: RPM
azure-cli 2.24.0
Extensions:
k8sconfiguration 0.1.8
spring-cloud 1.2.0
aks-preview 0.4.64
connectedk8s 1.1.5
Additional Context
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 17 (6 by maintainers)
I have found a workaround:
In
/usr/bin/az
replace thepython
command withpythond3.6
(and then re-install the connectedk8s extension):It seems that the RPM packages uses Python 3.6 but the
python3
command points to 3.9. This results in the wrong packages to be installed in the extension.