pythonplaid

ImportError: cannot import name 'Client' from 'plaid'


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


Solution

  • 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.