I have been struggling to find an answer. I am trying to integrate plaid with my django project, however I continue to get the same error. I am on python 3.11 and plaid 19.0.0.
I have tried various types of code, but it my troubles seem to be about the Client Library from Plaid. I am wondering if anyone has dealt with something similar. I have tried virtual environments and uninstalling, but to no avail.
The plaid-python package in in my python site packages where it shows:
ImportError: cannot import name 'Client' from 'plaid' (/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/plaid/__init__.py)
And the init.py file is:
"""
The Plaid API
The Plaid REST API. Please see https://plaid.com/docs/api for more details. # noqa: E501
The version of the OpenAPI document: 2020-09-14_1.496.2
Generated by: https://openapi-generator.tech
"""
__version__ = "19.0.0"
# import ApiClient
from plaid.api_client import ApiClient
# import Configuration
from plaid.configuration import Configuration
# import Environments
from plaid.configuration import Environment
# import exceptions
from plaid.exceptions import OpenApiException
from plaid.exceptions import ApiAttributeError
from plaid.exceptions import ApiTypeError
from plaid.exceptions import ApiValueError
from plaid.exceptions import ApiKeyError
from plaid.exceptions import ApiException
The file I am trying to run is this, but I have tried many functions as I have found its not the function its the import statement:
from plaid import Client
from django.shortcuts import render, redirect
def plaid_link_view(request):
# Initialize Plaid client
client = Client(client_id=PLAID_CLIENT_ID, secret=PLAID_SECRET, environment=PLAID_ENV)
# Create Link token for user interaction
link_token_create_response = client.Link.Token.create(
user={
"client_user_id": request.user.id, # Replace with user identification method
},
products=["transactions"], # Adjust products based on your needs
)
link_token = link_token_create_response['link_token']
# Render context with link_token for frontend integration
context = {
'link_token': link_token,
}
return render(request, 'plaid_link.html', context)
Any help would be greatly appreciated
Following the documentation, it should look something like this:
from django.shortcuts import render
from plaid import ApiClient, Configuration
from plaid.api.plaid_api import PlaidApi
def plaid_link_view(request):
# Initialize Plaid client
configuration = Configuration(
host=PLAID_ENV,
api_key={
"clientId": PLAID_CLIENT_ID,
"secret": PLAID_SECRET,
},
)
api_client = ApiClient(configuration)
client = PlaidApi(api_client)
# Create Link token for user interaction
link_token_create_response = client.link_token_create(
user={
"client_user_id": request.user.id, # Replace with user identification method
},
products=["transactions"], # Adjust products based on your needs
)
link_token = link_token_create_response["link_token"]
# Render context with link_token for frontend integration
context = {
"link_token": link_token,
}
return render(request, "plaid_link.html", context)
You're probably following an outdated tutorial as the api was changed 3 years ago.