[Upgrade] Fix 16952: Fix ImportError after upgrade #17314
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Resolve #16952
The issue was caused by reloading the
azure.cli.corepython module to get the new version after upgrade, it depends on modules inknack. The new loadedazure.cli.coredepends on new code of a newknackversion:from knack.util import status_tag_messages, butknack.utilis not reloaded, causing the issue ofImportError.There are two ways to solve this issue:
sys.modulesstarting withknacksuch asknack.util,knack.log. Note thatknackandknack.utilare 2 items insys.modules, simply reloadingknackwill not fix theImportErrorwithfrom knack.util import status_tag_messages.subprocessto getaz versionto avoid calling cached modules in the same Python Interpreter.This PR uses the second method as it is more error-proofing and easier to maintain as
azure.cli.corecould rely on new modules in the future.Testing Guide
python -m venv env-testazure-clipip install azure-cli==2.17.1env-test/lib/site-packages/azure/cli/command_modules/util/custom.pyaz upgradeHistory Notes
[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change.
[Component Name 2] az command b: Add some customer-facing feature.
This checklist is used to make sure that common guidelines for a pull request are followed.
The PR title and description has followed the guideline in Submitting Pull Requests.
I adhere to the Command Guidelines.
I adhere to the Error Handling Guidelines.