Python3.11+Plaid19.0.0集成Django时无法导入Client类求助
解决Plaid v19.0.0中
ImportError: cannot import name 'Client' from 'plaid'的问题 你的问题根源是Plaid Python SDK v19.0.0已废弃旧的Client类,从你提供的__init__.py也能看到,当前SDK导出的是ApiClient、Configuration这类新类,旧版Client已被移除。
直接按以下步骤修改代码即可解决:
1. 替换导入语句
把原代码中的from plaid import Client替换为:
from plaid import ApiClient, Configuration, Environment from plaid.api.link_token_api import LinkTokenApi
2. 修改客户端初始化逻辑
旧版Client的初始化方式不再适用,需要先配置Configuration实例,再创建ApiClient:
# 初始化配置 configuration = Configuration( client_id=PLAID_CLIENT_ID, secret=PLAID_SECRET, host=Environment[PLAID_ENV.upper()] # PLAID_ENV需为sandbox/development/production之一,转大写匹配枚举 ) # 创建ApiClient实例 client = ApiClient(configuration)
3. 调整Link Token创建的调用方式
旧版链式调用client.Link.Token.create需替换为对应API类的调用:
link_token_api = LinkTokenApi(client) link_token_create_response = link_token_api.link_token_create({ "user": { "client_user_id": str(request.user.id) # Plaid要求client_user_id为字符串类型,需转换 }, "products": ["transactions"] }) # 获取link_token改为属性访问 link_token = link_token_create_response.link_token
修改后的完整代码示例
from plaid import ApiClient, Configuration, Environment from plaid.api.link_token_api import LinkTokenApi from django.shortcuts import render, redirect def plaid_link_view(request): # 初始化Plaid配置和客户端 configuration = Configuration( client_id=PLAID_CLIENT_ID, secret=PLAID_SECRET, host=Environment[PLAID_ENV.upper()] ) client = ApiClient(configuration) # 创建Link token link_token_api = LinkTokenApi(client) link_token_create_response = link_token_api.link_token_create({ "user": { "client_user_id": str(request.user.id) }, "products": ["transactions"] }) link_token = link_token_create_response.link_token context = { 'link_token': link_token, } return render(request, 'plaid_link.html', context)
额外注意事项
- 确认
PLAID_ENV的值是sandbox、development或production中的一个,转大写后才能匹配Environment枚举成员 - 用
pip show plaid验证虚拟环境中安装的确实是v19.0.0版本
内容的提问来源于stack exchange,提问作者samuel jakshtis
相关产品推荐
相关产品推荐

