安卓Pydroid3使用pywhatkit实现WhatsApp自动化报DISPLAY KeyError如何解决
报错原因
KeyError: 'DISPLAY' 报错的核心原因是pywhatkit依赖pyautogui桌面GUI自动化库,该库运行需要X11显示服务支持,对应系统需要存在DISPLAY环境变量。安卓默认没有X11服务,不管是Pydroid3还是默认配置的Termux都不满足该依赖要求,所以导入阶段直接触发报错。
可行解决方案
方案1:调用本地WhatsApp客户端发送(最稳定,推荐)
利用Termux的termux-api工具直接调用安卓系统安装的WhatsApp应用发消息,完全不需要浏览器或者GUI依赖。
操作步骤:
- 安装和Termux配套的Termux API安卓APP
- 打开Termux终端执行以下命令安装依赖:
pkg update && pkg install termux-api python pip install termux-api
- 编写发送脚本,示例代码:
import os # 替换为目标手机号、发送内容即可 os.system('termux-send-sms -n "+9176xxxxxx18" -c "hello" -s com.whatsapp')
方案2:使用无GUI的WhatsApp Web协议库(不需要调用本地APP)
不需要依赖桌面环境,直接对接WhatsApp Web底层协议实现消息发送,Pydroid3和Termux都可运行。
如果愿意申请WhatsApp Cloud API开发者凭证,可以使用pywa库:
- 安装命令:
pip install pywa - 脚本示例:
from pywa import WhatsApp # 替换为你在WhatsApp开发者平台申请的凭证,首次使用扫码登录 wa = WhatsApp(phone_id="你的绑定手机号", api_token="你的API令牌") wa.send_message( to="+9176xxxxxx18", text="hello" )
如果不想申请开发者凭证,可以改用whatsapp-web.py库,安装命令pip install whatsapp-web.py,首次运行扫码登录即可使用,不需要额外申请权限。
方案3:修复pywhatkit运行环境(不推荐,稳定性差)
如果一定要用pywhatkit,可以给安卓安装X11服务满足依赖:
- 应用商店安装XServer XSDL APP,打开后保持后台运行,记录显示的DISPLAY地址(通常为
127.0.0.1:0) - 运行脚本前在终端执行命令:
export DISPLAY=127.0.0.1:0 - 再运行原有test.py脚本
该方案兼容性较差,就算导入成功,后续模拟点击浏览器操作也大概率失效,仅作参考。
内容的提问来源于stack exchange,提问作者Malay
相关产品推荐
相关产品推荐

