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:
- this usage scenario is quite rare, remove the source code when loading module from
whl after adding and removing it from azdev
- fix the
azdev extension remove logic
- 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.