Azure / Azure/azure-cli

Fails to remove `ml` extension on Windows

Open
#24,390 3 comments 0 reactions 1 assignee Claimed by @jiasli View on GitHub
act-platform-engineering-squad Auto-Assign bug Client Extensions Installation Service Attention
Dominant language
Python
Stars
4.6k
Forks
3.5k
Avg merge
3d 2h
Merged PRs (30d)
60

Description

### **This is autogenerated. Please review and update as needed.**

## Describe the bug
When remove `ml` extension, `pvectorc.cp310-win32.pyd` file can't be deleted.

After this command fails, `az extension list` raises error:
```
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/extension/__init__.py", line 308, in get_extension_modname
AssertionError: Expected 1 module to load starting with 'azext_': got []
```
------
After some investigation, I think `pyrsistent` might be the reason.
Create a new virtual env and install `pyrsistent`. This script also fails with same error:
```py
import os

import pyrsistent
os.remove('venv/Lib/site-packages/pvectorc.cp310-win_amd64.pyd')
```
Once `pyrsistent` is imported, this file can't be deleted.
I guess the file is opened by Python, but I can't find a way to release it.

-----
In `ml` extension, `pyrsistent` is imported by `jsonschema`, and `jsonschema` is used in `azext_mlv2\manual\vendored_curated_sdk\azure\ai\ml\_utils\_data_utils.py`:
```py
from jsonschema import Draft7Validator, ValidationError
from jsonschema.exceptions import best_match
```
If these two lines are not executed when cli load ml extension, the issue could be fixed.

### Workaround
Manually delete `C:\Users\hanglei\.azure\cliextensions/ml` folder to remove extension.

**Command Name**
`az extension remove`

**Errors:**
```
Failed to delete 'C:\Users\kk\.azure\cliextensions\ml': [WinError 5] Access is denied: 'C:\\Users\\kk\\.azure\\cliextensions\\ml\\pvectorc.cp310-win32.pyd'. Retrying ...
Failed to delete 'C:\Users\kk\.azure\cliextensions\ml': [WinError 5] Access is denied: 'C:\\Users\\kk\\.azure\\cliextensions\\ml\\pvectorc.cp310-win32.pyd'. Retrying ...
Failed to delete 'C:\Users\kk\.azure\cliextensions\ml': [WinError 5] Access is denied: 'C:\\Users\\kk\\.azure\\cliextensions\\ml\\pvectorc.cp310-win32.pyd'. Retrying ...
Failed to delete 'C:\Users\kk\.azure\cliextensions\ml': [WinError 5] Access is denied: 'C:\\Users\\kk\\.azure\\cliextensions\\ml\\pvectorc.cp310-win32.pyd'. You may try to delete it manually.
```

## To Reproduce:

```sh
az extension add -n ml
az extension remove -n ml
```

## Expected Behavior

## Environment Summary
```
Windows-10-10.0.22621-SP0
Python 3.10.5
Installer: MSI

azure-cli 2.41.0

Extensions:
account 0.2.5
alias 0.5.2
interactive 0.4.5
ml Unknown
rdbms-connect 1.0.3

Dependencies:
msal 1.20.0b1
azure-mgmt-resource 21.1.0b1
```
## Additional Context

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.