TL;DR: BlobServiceClient only exists in azure-storage-blob v12+. You have the legacy 2.x track installed (it provides BlockBlobService instead). Upgrade with pip install -U azure-storage-blob and the import works.

```text
ImportError: cannot import name 'BlobServiceClient' from 'azure.storage.blob'
```

## Fix it

1. Check the version: pip show azure-storage-blob. Expected: 2.x if you hit this.
2. Upgrade: pip install -U azure-storage-blob. Expected: version 12.x.
3. Verify: python -c "from azure.storage.blob import BlobServiceClient; print('ok')". Expected: ok.
4. Update your code to the v12 API (connection string or credential based client); v2 and v12 APIs are not interchangeable.

## When this applies
- pip shows azure-storage-blob 2.x and you want the modern API.

## When it doesn't
- pip already shows 12.x: then something else shadows the package (namespace conflict); check azure.__path__.
- You intentionally target the legacy API: keep 2.x and use BlockBlobService.

## Compatibility
- azure-storage-blob >= 12.0. Python 3.8+.

## Why it happens
Microsoft rebooted the storage SDK as v12 with a new object model. The 2.x track stayed on PyPI for back-compat, and old pins or tutorials keep installing it.

## Edge cases
- The v12 migration guide covers renamed methods (create_blob_from_path becomes upload_blob, etc.); budget time for the rewrite, not just the import.
- azure-storage (the old meta-package) pulls in 2.x; remove it.
