Azure / Azure/azure-cli-dev-tools
`azdev extension remove` does not clear its corresponding source code path in `sys.path` when its package name is not its folder name
- Dominant language
- Python
- Stars
- 91
- Forks
- 134
- Avg merge
- 2h 51m
- Merged PRs (30d)
- 1
Description
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:

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.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.