Skip to content

azdev extension remove does not clear its corresponding source code path in sys.path when its package name is not its folder name #519

@AllyW

Description

@AllyW

Reproduce step:

1. azdev extension add network-manager
2. azdev extension remove network-manager 
3. python -c "import sys; print(sys.path)"

It would interfere module loading afterwards using az extension add -s virtual-network-manager.whl -y

The root cause is azdev extension add installs python package using pip install -e module-folder which added its real package name into sys.path (check easy_install.pth in venv).

While azdev extension remove calls pip uninstall module-folder to remove it and when its package name is different from its module name(folder name under azure-cli-extensions/src), azdev extension remove does not remove its package name in sys.path, it only removed the *egg-info folder under its module.

Another issues is when loading dev extensions from az extension list, this cmd reads in the *egg-info folder package info and check it with its folder name and when it's different, then metadata cannot be loaded from *egg-info, which will lost module version and preview info, as below:

Image

What we can do has three options:

  1. this usage scenario is quite rare, remove the source code when loading module from whl after adding and removing it from azdev
  2. fix the azdev extension remove logic
  3. adjust the network-manager folder to be the same as its package name virtual-network-manager

My suggestion is option 3. This scenario has caused too many special logic codes and breaks in execution, and we need to avoid it.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions