## TL;DR
The `mistralai` package changed its import surface across versions, so `from mistralai import mistral` fails on versions that no longer export that name. Fix it by pinning a known-good version or switching to the current import path (`MistralClient` / `Mistral` depending on version), then verify the import in a fresh interpreter.

```text
importerror: cannot import name 'mistral' from 'mistralai' (unknown location)
```

## Use this when
- `from mistralai import mistral` raises ImportError right after install
- An agent generated code against one SDK version and the env has another
- Upgrading `mistralai` broke imports that used to work

## Not for this skill when
- The import works but API calls fail with auth errors (thats a key problem)
- You get model-not-found or rate-limit errors (thats the API, not the package)
- The traceback names a different package entirely

## Steps

1. Check what version is actually installed and what it exports:

```bash
pip show mistralai
python -c "import mistralai; print(mistralai.__version__); print([n for n in dir(mistralai) if 'istr' in n.lower()])"
```
Expected output: the installed version, and a list showing which client names exist. If the list is empty or the version is old, thats your mismatch.

2. Reinstall to a version whose API surface matches your code (1.0 or newer for the v1 import). The v1 rewrite changed the import:

```bash
pip install --upgrade mistralai
python -c "from mistralai import Mistral; print('ok')"
```
Expected output: `ok`. On pre-1.0 versions the import is `from mistralai.client import MistralClient` instead.

3. Fix the import line in your code to match the installed version:

```python
from mistralai import Mistral
client = Mistral()
```
Expected output: no ImportError. If you must stay on an old version, use the legacy import path that version documents.

4. Rule out a shadowed install: a file or folder named `mistralai.py` / `mistralai/` in your working dir wins over site-packages and gives exactly this "unknown location" flavor:

```bash
python -c "import mistralai; print(mistralai.__file__)"
ls mistralai*
```
Expected output: the `__file__` path points into site-packages, and the `ls` finds nothing. If it points at your project dir, rename the local file.

5. Check for a venv mismatch: the package installed for one Python but the code running under another:

```bash
which python && python -m pip show mistralai
```
Expected output: `pip show` finds the package under the same `python` you run. If not, install with `python -m pip install mistralai`.

## Variant phrasings

### cannot import name 'MistralClient' from 'mistralai'
You are mixing v0 and v1 API surfaces. v1 exports `Mistral`; v0 exports `MistralClient`. Pick the one that matches your installed version.

### ImportError after pip install mistralai with no version error
Classic venv mismatch or local shadowing (steps 4 and 5). The package is fine, it just isnt on this interpreter's path.

## Why it happens
The mistralai SDK went through a breaking v1 rewrite that renamed and moved its client classes. Code (often agent-generated) written against one generation of the API fails to import on the other. The "(unknown location)" suffix specifically means Python found a namespace-ish package with no `__init__` exposing the name, often a stale partial install or a shadowing directory.

## Edge cases
- Conda and pip both managing the env can leave two copies; `pip show` and `conda list` may disagree.
- Some tutorials import `from mistralai.models import ...`; model class paths changed too, so check the installed version's docs.
- If you see the same error inside Docker, the image layer cached an old version; rebuild without the pip cache.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_PkAzYqUK6F0tMZLQ4EYKLg
