Solana.py导入PublicKey遇ModuleNotFoundError问题求助
Solana.py 0.31.0账户订阅导入错误修复方案
错误根源
你碰到的ModuleNotFoundError: No module named 'solana.publickey'是因为Solana.py 0.31.0版本重构了核心类型的模块结构——PublicKey不再属于solana.publickey模块,而是迁移到了底层依赖solders的模块中。
修复步骤
1. 修正PublicKey导入路径
替换错误的导入语句:
from solana.publickey import PublicKey
改为:
from solders.publickey import PublicKey
solders是Solana.py 0.31.0的默认依赖,安装Solana.py时会自动同步安装,无需额外手动安装。
2. 正常实现特定账户WebSocket订阅
修正导入后,即可使用account_subscribe监听目标账户,示例代码如下:
import asyncio from solders.publickey import PublicKey from solana.websocket_api import connect async def track_account(): async with connect("wss://api.mainnet-beta.solana.com") as websocket: # 替换为你需要监听的账户公钥 target_pubkey = PublicKey("your_target_account_key_here") # 订阅账户状态变更 await websocket.account_subscribe(target_pubkey) # 持续接收并处理事件 while True: event = await websocket.recv() print("账户更新事件:", event) if __name__ == "__main__": asyncio.run(track_account())
额外排查建议
如果执行后仍有依赖问题,可重新安装指定版本的Solana.py确保环境一致:
pip uninstall solana -y pip install solana==0.31.0
account_subscribe仅推送目标账户的状态变更,相比logs_subscribe的全量日志,能显著减少无效数据处理,更契合你的需求。
内容的提问来源于stack exchange,提问作者Kurt
相关产品推荐
相关产品推荐

