I have a very simply program that I copied from Google’s workspaces, the import statements are as follows
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
When I run this code, I keep getting:
from google.auth.transport.requests import Request
ModuleNotFoundError: No module named 'google'
I have been through every question on the topic here, pip installed the world and still no love. I created a requirements.txt file and used pip show to obtained the current versions that ARE installed in my C:\Python310\Lib\site-packages\ - which is in my PATH along with C:\Python310\ and C:\Python310\Scripts.
The requirements document, in VSCode, shows no missing references and yet I keep getting the same error. I even went through VSCode Intellisense and manually recreated each Import statement with no issues. So VSCode sees the modules but I still get that same error.
Can somebody possibly help me out?
Thank you for your time.
UPDATE: Complete code sample*
# Imports
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
import base64
from email.mime.text import MIMEText
# Authenticate
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly',
'https://www.googleapis.com/auth/gmail.modify']
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
service = build('gmail', 'v1', credentials=creds)
service.users().messages().list(userId='me', maxResults=10).execute()
The issue you’re encountering with the ModuleNotFoundError: No module named 'google' seems to be a quirk with how the google library is structured. Here’s how to fix it:
The Problem:
The google.auth.transport.requests import tries to access the google package first, which isn’t directly installed. While you have the required libraries (google-auth , etc.), there’s an extra step needed for the import to work correctly.
The Solution:
There are two main ways to fix this:
1. Explicit Import:
Instead of importing Request from the nested path, directly import it from the google.auth.transport package:
This will create a symbolic link within the google package that points to the actual libraries you already have installed (e.g., google-auth ). However, using the explicit import from step 1 is generally preferred for clarity.
Choosing the Best Solution:
If you prefer a cleaner and more explicit approach, use the direct import (from google.auth.transport import Request ).
If you want to have the google package available for other potential imports in your codebase, you can install it (though it’s not required for using the Google APIs).
Additional Tips:
Make sure your virtual environment (if you’re using one) is activated before running the script.
Double-check that your environment variables (PATH) are set correctly to include your Python installation directory.
Verify there are no conflicts with other libraries using the same name (google or its sub-modules).
By applying one of these solutions, your code should be able to import the required modules and connect to Google services without the ModuleNotFoundError .