When you run your Python script and hit the dreaded ImportError, your whole workflow stalls. If you see the message cannot import name genai from google, your project is tripping over a mismatch between outdated package names and the official Google GenAI SDK structure. You didn't break your script. Instead, Google reorganized its Python packages for Gemini models, shifting from legacy SDKs like google-generativeai to the modern google-genai library.
Fixing this requires replacing old import statements, cleaning up conflicting pip installations, and updating your client initialization code. If you're managing multiple environments, old cached modules often linger and break your builds. Let's fix this error once and for all.
Why the Import Error Happens
Python raises an ImportError when it can't find a specific attribute inside a module. In this case, your code tries to pull genai directly from the top-level google namespace:
from google import genai
This syntax fails for a few specific reasons:
- Package Namespace Collision: You might have installed
google-generativeai(the legacy SDK) alongside or instead of the currentgoogle-genaipackage. - Incorrect Top-Level Namespace: The modern SDK uses
from google import genai, but only ifgoogle-genaiis installed correctly and no conflicting legacy packages occupy thegooglenamespace directory. - Virtual Environment Pollution: Global site-packages or leftover artifacts from older experimental SDKs override local package resolutions.
Google's modern SDK for Gemini models relies on a unified package structure. If you mix installation commands or reference deprecated documentation, Python looks for attributes that no longer exist where your script expects them.
Step-by-Step Resolution Guide
Fixing this import failure takes just a few terminal commands and a quick code adjustment. Follow these steps to clean your environment and update your syntax.
1. Uninstall Conflicting Packages
Legacy libraries like google-generativeai and the old protobuf-heavy wrappers conflict with the new client library. Wipe them clean from your active environment:
pip uninstall google-generativeai google-genai
If you use Poetry, Pipenv, or conda, make sure to purge them from your configuration files as well. For example, with Poetry:
poetry remove google-generativeai google-genai
2. Install the Official Google GenAI SDK
Install the correct, current package maintained in the Google GenAI GitHub Repository:
pip install google-genai
Double-check your installation by running pip list in your terminal. You should see google-genai listed without older conflicting libraries sharing the same namespace.
3. Update Your Import and Client Initialization
The modern SDK changes how you instantiate the client. Don't rely on legacy methods that pass API keys directly to model configuration helpers. Instead, initialize the client explicitly:
from google import genai
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="Explain quantum computing in one sentence.",
)
print(response.text)
Make sure your environment variable GEMINI_API_KEY is set in your shell session or .env file so the client picks it up automatically:
export GEMINI_API_KEY="your_actual_api_key_here"
Common Mistakes to Avoid
Even after reinstalling packages, small configuration oversights keep this error alive. Watch out for these pitfalls:
- Naming your local file
google.py: If you name your scriptgoogle.pyor create a local folder namedgoogle, Python imports your local file instead of the installed library. This triggers immediate import failures. Rename your script to something distinct, likegemini_test.py. - Mixing SDK versions: Importing from
google.generativeaiwhile usinggoogle-genaisyntax causes attribute mismatches. Pick one SDK ecosystem and stick with it across your entire codebase. - Ignoring virtual environments: Installing packages globally often leads to permission issues and conflicting versions. Always activate a dedicated virtual environment before running pip commands. You can review official setup guidelines in the Python Packaging User Guide.
Frequently Asked Questions
Is google-generativeai completely deprecated?
Yes. Google has transitioned development focus to the unified google-genai SDK to support newer Gemini features and standard client interfaces. You should migrate all legacy projects to the new package.
How do I pass my API key explicitly without environment variables?
While using environment variables is safest, you can pass the key directly during client initialization:
from google import genai
client = genai.Client(api_key="your_api_key_here")
Why does Python still say it can't find genai after reinstalling?
This usually happens because of stale .pyc cache files or multiple Python installations on your machine. Try running your script with python3 -m pip install google-genai to ensure you target the correct interpreter version.