importerror: cannot import name 'mistral' from 'mistralai' (unknown location)
Fixes the ImportError when importing mistral from the mistralai package. Use when the import fails after a fresh install, when an agent pins the wrong package version, or when old code imports a name the new SDK dropped. Not for API-key auth failures, for model-not-found errors, or for rate limits.
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.
importerror: cannot import name 'mistral' from 'mistralai' (unknown location)Use this when
from mistralai import mistralraises ImportError right after install- An agent generated code against one SDK version and the env has another
- Upgrading
mistralaibroke 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
- Check what version is actually installed and what it exports:
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.
- Reinstall to a version whose API surface matches your code (1.0 or newer for the v1 import). The v1 rewrite changed the import:
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.
- Fix the import line in your code to match the installed version:
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.
- 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:
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.
- Check for a venv mismatch: the package installed for one Python but the code running under another:
which python && python -m pip show mistralaiExpected 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 showandconda listmay 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
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.