Python中同时导入Binance和Twilio的Client类命名冲突如何解决
错误根因
你当前的报错是因为Python导入同名类时,后导入的类会覆盖命名空间中先导入的同名类:你先导入了binance的Client,之后导入twilio的Client时直接把前者覆盖了,所以你实例化binance客户端时实际调用的是twilio的Client类,该类本身没有get_symbol_info方法,因此抛出属性错误。
解决方案
有两种常用方案可以规避命名冲突:
方案1:导入时指定别名(最推荐)
在导入语句中用as关键字给同名类设置不同的别名,调用时直接用别名区分即可:
# 导入时分别设置别名 from binance.client import Client as BinanceClient from twilio.rest import Client as TwilioClient # 实例化时调用对应别名 client = BinanceClient(KEY.access_key, KEY.secret_key) # 对应binance客户端 twilio_client = TwilioClient(account_sid, auth_token) # 对应twilio客户端
方案2:导入完整模块,通过模块名限定类
不直接导入Client类,改为导入整个上层模块,调用时用模块路径区分同名类:
# 导入完整模块 import binance.client import twilio.rest # 实例化时带上模块路径 client = binance.client.Client(KEY.access_key, KEY.secret_key) twilio_client = twilio.rest.Client(account_sid, auth_token)
内容的提问来源于stack exchange,提问作者Willy_JH
相关产品推荐
相关产品推荐

