You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH(-X)连接Ubuntu16.04运行词云脚本遇_tkinter.TclError错误

解决_tkinter.TclError: couldn't connect to display "localhost:10.0"错误

嘿,我来帮你搞定这个烦人的错误!你遇到的问题本质是matplotlib后端设置的顺序不对,另外虽然用了SSH-X转发,但其实咱们根本不需要它——因为Agg是无GUI后端,完全可以离线生成图片,不用依赖X11显示服务。

具体修复方案

1. 调整后端设置的位置(最关键)

mpl.use('Agg')必须在导入matplotlib.pyplot之前执行,否则这个设置根本不会生效!你原来的代码先导入了plt,再设置后端,这就等于白设置了。修改后的代码应该是这样:

from os import path
from wordcloud import WordCloud
import matplotlib as mpl

# 先设置无GUI后端,再导入pyplot!
mpl.use('Agg')
import matplotlib.pyplot as plt

d = path.dirname(__file__)
text = open(path.join(d, 'words.txt')).read()
wordcloud = WordCloud().generate(text)

# 配置图表后直接保存,别想着显示(服务器没GUI啊)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
# 把生成的词云存到文件里
plt.savefig(path.join(d, 'wordcloud.png'))

2. 完全可以抛弃SSH的-X参数

既然用了Agg后端,你完全不需要用ssh -X连接服务器,直接普通SSH连接就行:

ssh your_username@your_server_ip

如果非要保留X转发(其实没必要),可以给服务器装一下依赖:

sudo apt-get install xauth python-tk python3-tk

但真心不推荐,因为咱们要的是离线生成图片,不是在服务器上显示窗口。

3. 更简单的方式:直接用WordCloud自带的保存方法

其实你甚至可以跳过matplotlib的绘图步骤,直接用WordCloud的to_file方法生成图片,这样连plt都不用碰:

from os import path
from wordcloud import WordCloud

d = path.dirname(__file__)
text = open(path.join(d, 'words.txt')).read()
wordcloud = WordCloud().generate(text)

# 直接保存,一步到位
wordcloud.to_file(path.join(d, 'wordcloud_direct.png'))

验证一下

修改完代码后,在服务器上运行脚本,看看是不是成功生成了图片文件,而且再也不会弹出那个display连接错误啦!

内容的提问来源于stack exchange,提问作者W. Reyna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:41:31